主页 > imtoken钱包和tp钱包对比 > 比特币“私钥”、“公钥”和“钱包地址”的关系

比特币“私钥”、“公钥”和“钱包地址”的关系

imtoken钱包和tp钱包对比 2023-02-27 05:24:04

#reply25

算法

比特币交易涉及到很多密码学知识:公钥、私钥、哈希、对称加密、非对称加密、签名等,那么哪些需要用户小心保管,不能对外泄露,哪些需要用户公开吗? 先从钱包地址的生成说起吧。 安全

钱包地址生成

img

1.首先使用随机数生成器生成“私钥”。 一般来说,这是一个256bits的数字。 有了这串数字,就可以对对应“钱包地址”中的比特币进行操作,所以一定要妥善保管。

2、“私钥”通过SECP256K1算法处理生成“公钥”。 SECP256K1 是一种椭圆曲线算法。 当知道“私钥”时,可以计算出“公钥”,但当知道“公钥”时,就不能反算出“私钥”。 这是保护比特币安全的算法基础。

3、和SHA256一样,RIPEMD160也是一种Hash算法,可以从“公钥”算出“公钥哈希”比特币扩展公钥,反之则不行。

4、将一个一字节的地址版本号链接到“公钥哈希”头(对于比特币网络的公钥地址,这个字节为“0”),然后对其进行两次SHA256运算,将结果转换为前 4 个字节用作“公钥哈希”的验证值,链接在末尾。

5、将上一步的结果(比特币定制版)用BASE58编码,得到“钱包地址”。

例如1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa网络

“私钥”、“公钥”和“钱包地址”的关系

在以上五个步骤中,只有“BASE58编码”有对应的可逆算法(“BASE58解码”),其余算法都是不可逆的,因此这些数据之间的关系可以表示为:

img

能够看到:编码

使用“私钥”签署交易

比特币钱包之间的转账是通过交易来实现的。 交易数据由转账钱包“私钥”的所有者生成,也就是说,有了“私钥”,就可以花费钱包的比特币余额。 生成交易的过程如下:

img

1、交易的原始数据包括“转账金额”和“转入钱包地址”,但仅有这些是不够的,因为没有办法证明交易的生成者有权使用余额“转出钱包地址”。 因此,原始数据需要用“私钥”进行签名。

2.生成“转账钱包公钥”,过程同第二步生成“钱包地址”。

3、在原始交易数据上加上“转账签名”和“转账公钥”,生成正式的交易数据,以便广播到比特币网络进行转账加密

使用“公钥”验证签名

img

交易数据广播到比特币网络后,节点会对交易数据进行验证,包括签名的验证。 如果验证无误,则余额已成功从“转账钱包”转入“转账钱包”。 温泉

总结 如果一个“钱包地址”从来没有向其他“钱包地址”发送过余额,那么它的“公钥”就不会暴露在比特币网络上。 公钥生成算法(SECP256K1)是不可逆的比特币扩展公钥,即使“公钥”暴露,也很难影响“私钥”的安全(难易程度取决于“私钥”的生成算法)。

“私钥”用于生成“公钥”和“钱包地址”,也用于签署交易。 拥有“私钥”就意味着拥有操作钱包余额的全部权力。 因此,保护​​“私钥”是所有比特币钱包应用最基本也是最重要的功能。

笔记