独舞

  • 首页
  • 程序开发
    • Java
    • 容器
    • 数据库
    • Javascirpt
    • 前端
  • Linux相关
  • 路由和网络
  • 苹果相关
  • 关于
    • 简历
独舞
记录那些朝花夕拾的日子……
  1. 首页
  2. 程序开发
  3. Java
  4. 正文

基于Web3j做账号签名认证

2022年5月5日 376点热度 0人点赞 0条评论

file

废话不多说,直接贴代码

public class Web3jUtils {
    public static boolean isSignatureValid(final String address, final String signature, final String message) {
        log.info("isSignatureValid invoked for Address {} with Signature {} and Message {} ", address, signature,
                message);

        final String personalMessagePrefix = "\u0019Ethereum Signed Message:\n";
        boolean match = false;

        final String prefix = personalMessagePrefix + message.length();
        final byte[] msgHash = Hash.sha3((prefix + message).getBytes());
        final byte[] signatureBytes = Numeric.hexStringToByteArray(signature);
        byte v = signatureBytes[64];
        if (v < 27) {
            v += 27;
        }

        final Sign.SignatureData sd = new Sign.SignatureData(v,
                Arrays.copyOfRange(signatureBytes, 0, 32),
                Arrays.copyOfRange(signatureBytes, 32, 64));

        String addressRecovered = null;

        // Iterate for each possible key to recover
        for (int i = 0; i < 4; i++) {
            final BigInteger publicKey = Sign.recoverFromSignature((byte) i, new ECDSASignature(
                    new BigInteger(1, sd.getR()),
                    new BigInteger(1, sd.getS())), msgHash);

            if (publicKey != null) {
                addressRecovered = "0x" + Keys.getAddress(publicKey);

                if (addressRecovered.equals(address)) {
                    match = true;
                    break;
                }
            }
        }

        return match;
    }
}
标签: ethereum web3j
最后更新:2022年5月5日

Phil

一直以来 我只有前进才能忘记羞辱的历史 所以 还有很多事情 需要我去做 也有很多事情 我必须要做

点赞
< 上一篇
下一篇 >
分类
  • Java / 32篇
  • Javascirpt / 1篇
  • Linux / 40篇
  • Mac / 2篇
  • 前端 / 4篇
  • 区块链 / 2篇
  • 容器 / 8篇
  • 数据库 / 1篇
  • 服务器主机 / 2篇
  • 未分类 / 12篇
  • 程序开发 / 1篇
  • 路由器 / 14篇
广告
广告

COPYRIGHT © 2021 mmgg.net. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

粤ICP备09207437号-5