主页 > imtoken钱包正确的下载地址 > 如何使用比特币私钥
如何使用比特币私钥
如何使用比特币私钥第 1 部分
1、别忘了,比特币公钥有两种表示形式,一种是0x04开头,65字节,另一种是0x02或0x03开头,33字节。 公钥的hash,还需要在前缀信息中标明公钥的表示!
2. (.11x.x_KxK 和 n.
3. 对于签名者来说,能够提供正确的签名意味着他必须拥有私钥。
4.调用签名验证方法进行测试!#calculaterecovery_id。
5. plain='使用比特币私钥签署任何消息aaron67'。
6. (x_K, y_K)(xK , yK )!
7. IGdzMq98lowek10e3JFXWj909xp0oLRj71aF7jpWRxaabwH+fBia/K2JpoGQlFFbAl/Q5jo2DYSzQw6pZWhmRtk=。
8. defsign_message(private_key: int, plain_text: str)->tuple:.
9比特币私钥怎么用,C。 本文将详细介绍如何使用比特币私钥签署任意消息!
10. pub_key=scalar_multiply(priv_key, curve.g)。
如何使用比特币私钥第 2 部分
1. #验证签名。 序列化签名结果。 YY的整数次方,即可解出y。
2. ee 需要知道两个额外的信息来恢复公钥:。
3. rr 找到 x。 如果前缀=35:。
4.o。 所以从签名中恢复公钥的关键是确定K点。
5.参考。 nn 和 p。 压缩=假。
6、3。 y_KyK 的奇偶性。
7. A=aG=r^{-1}(sk-e)\cdotG=r^{-1}(s\cdotkG-eG)=r^{-1}(sK-eG)A=aG=r −1(sk−e)⋅G=r−1(s⋅kG−eG)=r−1(sK−eG)。
8,或者。 x_K
9.mm的UTF-8编码。 返回 int_to_varint(len(msg_bytes))+msg_bytes。
10.对应的代码实现起来并不难,计算(.
如何使用比特币私钥第 3 部分
1、我们称这个标签为recovery_id或recid,并签署ECDSA签名(.
2. d=message_digest(纯文本)。
3. ifnotverify_signature(public_key, d, (r, s)):.
4.返回真值。 返回假。
5.KK坐标(。使用钱包工具或第三方服务验证此输出,即可验证签名成功!
6.#验证签名。
7. defmessage_digest(message:str)->bytes:.
8. 返回 message_bytes('BitcoinSignedMessage:\n')+message_bytes(message)。
9. public_key=add(scalar_multiply(mod_inv_r*s, point_k), scalar_multiply(mod_inv_r*(-e%curve.n), curve.g)).
10. ≡。 所以从 r。 另外,知道x。
如何使用比特币私钥第 4 部分
1.可恢复的ECDSA签名。
2. #s。 recovery_id, r, s=0,0,0。
3.k. K. (r, s)(r, s) 和消息 e。
4. y_KyK 。 椭圆曲线上下对称,如果点(.
5. msg_bytes = 消息。 编码('utf-8')。
6.如果public_key_hash(public_key,压缩)! =address_to_public_key_hash(p2pkh_address): .
7. point_k=(x, y)。 至此,所有的准备工作就绪,需要连载才能展示最终的结果!
8. 从序列化签名中,解析 recid 和 (.
9. p2pkh_address = public_key_to_address (public_key, compressed = True)。
10,-。 ep 在验证消息的签名时,原始消息和序列化后的加密签名,所以相应的签名验证过程也要微调!
如何使用比特币私钥第 5 部分
1、有了这些知识,编写相应的签名验证代码就不难了。 求解point_k时请注意费马小定理的应用!
2. sig_electrum='IGdzMq98lowek10e3JFXWj909xp0oLRj71aF7jpWRxaabwH+fBia/K2JpoGQlFFbAl/Q5jo2DYSzQw6pZWhmRtk='。
3.recovery_id=prefix-27。
4. pub_key=scalar_multiply(priv_key, compressed=True)。
5. y_KyK 为1的奇数。y_KyK 为偶数!
6.用公钥和消息(.pp,with.
7. 名词 #符号。 返回 p2pkh_address,b64encode(serialized_sig).decode('ascii')。
8. defverify_message (p2pkh_address: str, plain_text: str, signature: str) -> bool: .
9、yy需要“平方根”,因为有模运算,很麻烦。 我们可以用费马小定理来改进一下!
10. 然后。 x_K=r+nxK =r+n 是解!
如何使用比特币私钥第 6 部分
1. defsign_recoverable(private_key: int, message: bytes) -> tuple:.
2. priv_key=0xf97c89aaacf0cd2e47ddbacc97dae1f88bec49106ac37716c451dcdd008a4b62。
3. 验证恢复公钥的哈希值,需要从该点的X坐标找到对应的Y坐标。 Spec256k1 的曲线方程。
4. y=-y%curve.p。 #CalculatepointaG,a是私钥。
5.输出是。 recovery_id=0|2ifk_x>curve.nelse0|k_y%2。
6.kk,保证其绝对隐私和足够随机生成非常重要!
7.#好的。 kk,可以计算私钥了!
8. x_Kn,y。
9. 使用比特币私钥对任意消息进行签名aaron67。
10. 那么问题来了,没有公钥怎么验证签名呢? 只有一种可能比特币私钥怎么用,可以从ECDSA签名中恢复出公钥!
矿业网络,版权所有丨如未注明,均为原创丨本站采用BY-NC-SA协议授权