首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么发条密码签字人工具会返回比bip32飞镖包更多的字符?

为什么发条密码签字人工具会返回比bip32飞镖包更多的字符?
EN

Stack Overflow用户
提问于 2020-05-16 05:09:53
回答 1查看 187关注 0票数 0

我正在尝试签署一个事务框架Blockcypher返回,以便按照https://www.blockcypher.com/dev/bitcoin/#creating-transactions发送。

对于本例,我将使用完全不安全的“原始”助记符,它使用dart bip32包为BTC testnet创建一个具有私钥的BIP32和address mpQfiFFq7SHvzS9ebxMRGVohwHTRJJf9ra。

发条密码Tx骨架1cbbb4d229dcafe6dc3363daab8de99d6d38b043ce62b7129a8236e40053383e.

使用分组密码签字器工具

代码语言:javascript
复制
$ ./signer 1cbbb4d229dcafe6dc3363daab8de99d6d38b043ce62b7129a8236e40053383e 05a2716a8eb37eb2aaa72594573165349498aa6ca20c71346fb15d82c0cbbf7c

304402202711792b72547d2a1730a319bd219854f0892451b8bc2ab8c17ec0c6cba4ecc4022058f675ca0af3db455913e59dadc7c5e0bd0bf1b8ef8c13e830a627a18ac375ab

另一方面,使用bip32我得到:

代码语言:javascript
复制
String toSign = txSkel['tosign'][0];
var uToSign = crypto.hexToBytes(toSign);
var signed = fromNode.sign(uToSign);
var signedHex = bufferToHex(signed);
var signedHexNo0x = signedHex.substring(2);

其中fromNode是bip32.BIP 32节点。输出为signedHexNo0x = 2711792b72547d2a1730a319bd219854f0892451b8bc2ab8c17ec0c6cba4ecc458f675ca0af3db455913e59dadc7c5e0bd0bf1b8ef8c13e830a627a18ac375ab

乍一看,它们似乎完全不同的缓冲区,但仔细看一看,Blockcypher输出只有一些额外的字符比bip32。

代码语言:javascript
复制
Blockcypher signer output (I split it into several lines for you to see it clearly):
30440220
2711792b72547d2a1730a319bd219854f0892451b8bc2ab8c17ec0c6cba4ecc4
0220
58f675ca0af3db455913e59dadc7c5e0bd0bf1b8ef8c13e830a627a18ac375ab
代码语言:javascript
复制
bip32 output (also intentionally split):
2711792b72547d2a1730a319bd219854f0892451b8bc2ab8c17ec0c6cba4ecc4
58f675ca0af3db455913e59dadc7c5e0bd0bf1b8ef8c13e830a627a18ac375ab

我希望两个64个字符的数字给出128个字符的签名,bip32输出完成这个签名。因此,Blockcypher签名器输出有140个字符,即比前者多12个字符,这一点在看到像上面那样被分割成行时是很清楚的。

我真的很感谢任何人在这个问题上发表了一些看法,我需要理解和纠正。我需要在dart中实现该解决方案,除了用于测试之外,我不能使用签名脚本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-17 00:12:24

dart bip32包似乎不是以DER格式编码签名,而是使用简单的(r,s)编码。然而,比特币需要DER。有关更多信息,请参见:

https://bitcoin.stackexchange.com/questions/92680/what-are-the-der-signature-and-sec-format

您可以根据r和s自己添加DER额外的字节,或者检查dart bip32库中是否有DER编码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61832166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档