如何解决如何字符串化椭圆签名ECDSA
我有一个签名,它可以工作,但我想将此签名传递给 websocket,但我需要字符串化以传递对象。但是当我字符串化然后解析时,结果不一样。
let privKey = keyPair.getPrivate("hex");
let msg = JSON.stringify({
go: 'coucou'
});
let msgHash = sha3.keccak256(msg);
let signature =
ec.sign(msgHash,privKey,"hex",{ canonical: false });
console.log(signature)
console.log(JSON.stringify(signature))
字符串化前的签名:
Signature {
r: BN {
negative: 0,words: [
2305509,63298775,50157238,36339965,49744272,57791728,21008130,692794,36859051,3475687
],length: 10,red: null
},s: BN {
negative: 0,words: [
4203544,5856462,11303403,15905374,1228528,49677779,30950729,21688839,46989698,1764062,0
],recoveryParam: 1
}
JSON.stringify() 之后的签名:
{"r":"d4239e326cab02a48e9408f02dc753c2f709908aa03f6fd56b6f17735c232de5","s":"6bab7acd018252bc81dd84549bd8174c12bef03cac978ac79eb1657338402418","recoveryParam":1}
JSON.parse() 之后的签名:
{
r: 'fc102d49e2b1405afdf61c767a72910241dd87d3fb92b6660f4bd7c08dc9d507',s: '59570010a6c7b70c5ff2490732e32d1bbe66d2f99504f500cf0897343e32f43b',recoveryParam: 1
}
所以你可以看到,我没有相同的结果。 肯定有什么东西逃不过我
解决方法
终于找到解决办法了。
代码是对的,你可以保留解析后的响应,它用于签名验证,不要忘记在你的验证函数中解析签名。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。