java-sdk icon indicating copy to clipboard operation
java-sdk copied to clipboard

javasdk和web3j中椭圆曲线算法V R S值的问题

Open longJJ2016 opened this issue 5 years ago • 1 comments

image image 如图: 第一张javasdk加签 格式为 RSV 第二张web3jsdk加签 格式为 VRS ps: R:0-32字节,S:32-64字节,V:1字节,组成最终签名数据

longJJ2016 avatar Jan 06 '21 03:01 longJJ2016

Java SDK中提供了通过v, r, s直接构造SignatureResult的接口,如果需要两个SDK混用,可以将Web3SDK生成的签名反序列化后,重新使用Java SDK的方式序列化签名结果,示例如下:

构造并验证SignatureResult

public boolean verifySignature(String publicKey, byte v, byte[] r, byte[] s, String message)
{
// 通过v, r, s构造ECDSASignatureResult
ECDSASignatureResult signatureResult = new ECDSASignatureResult(v, r, s);

// 序列化签名结果
String signatureMessage = signatureResult.convertToString();

// 验证签名
ECDSASignature signature = new ECDSASignature();
return signature.verify(publicKey, message, signatureMessage)
}

cyjseagull avatar Jan 18 '21 04:01 cyjseagull