比特币使用ECDSA和ECDH的地方

时间:2017-08-02 10:10:49

标签: cryptography bitcoin ecdsa

1.var hash = crypto.randomBytes(32);
2.var publickey = ecdh.setPrivateKey(hash,'hex').getPublicKey('hex');
then sha256 => ripemd160 => encode... => address

我知道比特币地址是如何产生的,但似乎只是使用ECDH来生成比特币地址,但我看到很多话说它使用ECDSA,我想知道比特币在哪里使用ECDSA以及比特币如何使用加密来验证交易和哪个加密函数用于签名事务。 感谢。

1 个答案:

答案 0 :(得分:1)

除了您可以使用ECDSA的公钥生成比特币地址的事实外,比特币不使用ECDSA生成地址。真正使用椭圆曲线的地方是签署交易。

首先,使用所有正确的字段(包括ScriptPubKey)创建原始事务,然后将其转换为字节列表。然后,您获取事务字节的SHA256,然后获取SHA256的结果。这是消息摘要,这是您需要使用ECDSA私钥进行签名以生成SigScript的内容。但是,SigScript不仅包含签名摘要。首先是SIGHASH_CODE的摘要长度+ 1,然后是签名本身,然后是sig哈希码,然后是公用密钥的长度,最后是公用密钥本身。将所有这些串联后,就需要将SigScript插入事务中。显然,像SigPubKey一样,整个SigScript都有一个前缀。最后插入大小和结果,现在您可以进行签名交易了。