版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wypeng2010/article/details/81325762
引言
之前介绍了eth私钥公钥地址的生成,接下来介绍一下eth地址有效性的校验,要做地址有效性的校验,首先要知道他的地址规则:
eth的地址,就是把公钥用sha256hash之后,取其后160位生成的16进制字符串(40个字符)再加上前缀“0x”(总共42位)
校验流程
第一步,先判断地址非空和是否0x开头
第二步,把16进制字符串转成10进制数,看是否能否转换成功
第三部,判断是否长度是40位(去掉0x)
代码实现
public static boolean isETHValidAddress(String input) {
if (StringUtils.isNull(input) || !input.startsWith("0x"))
return false;
return WalletUtils.isValidAddress(input);
}
isValidAddress方法
public static boolean isValidAddress(String input) {
String cleanInput = Numeric.cleanHexPrefix(input);
try {
Numeric.toBigIntNoPrefix(cleanInput);
} catch (NumberFormatException e) {
return false;
}
return cleanInput.length() == ADDRESS_LENGTH_IN_HEX;
}