主页 > imtoken1.0钱包下载 > 比特币公钥、私钥和地址之间的关系是什么?

比特币公钥、私钥和地址之间的关系是什么?

imtoken1.0钱包下载 2023-03-29 06:39:19

私钥

非公开,业主需要妥善保管。它通常由随机算法生成。说白了就是一个巨大的随机整数,256位32字节。1 到 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141 之间的数字可以被认为是有效的私钥。因此比特币保管私钥,除了随机方法之外,使用特定算法从固定输入获得32字节输出的算法都可以作为获取私钥的方法。因此,就有了迷你私钥(Mini Privkey),原理很简单,比如SHA256的一个实现:

私钥 = SHA256()

迷你私钥存在安全问题。由于输入集太小,很容易被构造普通组合的彩虹表暴力破解,所以通常最好使用系统随机生成比特币保管私钥,不存在安全隐患。

比特币保管私钥_查看比特币私钥_比特币 手机 私钥

公钥

一个公钥对应一个私钥。私钥可以推导出唯一的公钥,但公钥不能推导出私钥。公钥有两种形式:压缩和未压缩。

在比特币的早期,使用的是未压缩的公钥,现在大多数客户端默认使用压缩的公钥。这似乎是比特币系统中的一个类似功能的错误。早期代码写得不够仔细,openssl库的文档也不够好,导致中本聪认为必须使用未压缩的全公钥。公钥的左右32个字节是相关的,左边(X)可以推导出右边(Y)的平方值,左边(X)就够了。

比特币 手机 私钥_比特币保管私钥_查看比特币私钥

现在这两种方法在系统中并存,而且应该一直并存。两个公钥的第一个字节是标识位,压缩后的 33 字节,未压缩的 65 字节。0x04 开头是未压缩的,0x02/0x03 开头是压缩的公钥,0x02/0x03 的选择由右 Y 平方的奇偶性决定。

压缩后的形式可以减小 Tx/Block 的大小,每个 Tx Input 减少 32 个字节。

地址

比特币保管私钥_查看比特币私钥_比特币 手机 私钥

地址是人们方便交换的方案,因为公钥太长(130 串或 66 串)。地址长度为25字节,转换为base58编码后为34或35个字符。base58是一种类似于base64的编码,但是去掉了可能造成视觉混淆的字符,并在地址末尾添加了4字节校验位,以保证当人们交换个别字符不正确时,也可以因地址验证失败而停止. 错误的操作。

由于公钥有两种形式,一个公钥对应两个地址。两个地址都可以使用相同的私钥签署交易。

从公钥生成地址的算法:

比特币保管私钥_查看比特币私钥_比特币 手机 私钥

版本 = 0 的 1 个字节(零);在测试网络上,这是 111 的 1 个字节

密钥哈希 = 与 RIPEMD-160 连接的版本(SHA-256(公钥))

校验和 = SHA-256 的第一个 4 个字节(SHA-256(密钥哈希))

查看比特币私钥_比特币保管私钥_比特币 手机 私钥

比特币地址 = Base58Encode(与校验和连接的密钥哈希)

下图显示了从未压缩的公钥生成地址的过程:

压缩公钥生成地址时,只能取公钥的X部分。

导出关系

三者的推导关系:私钥>>公钥>>两个地址。这个过程是不可逆的。如果你有私钥,你就拥有了一切,但通常为了方便,相应的公钥和地址也会被存储。