java-sdk
java-sdk copied to clipboard
javasdk和web3j中椭圆曲线算法V R S值的问题
如图:
第一张javasdk加签 格式为 RSV
第二张web3jsdk加签 格式为 VRS
ps: R:0-32字节,S:32-64字节,V:1字节,组成最终签名数据
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)
}