主页 > imtokendapp授权 > 比特币公钥和私钥

比特币公钥和私钥

imtokendapp授权 2023-01-17 10:27:35

今天,我来谈谈比特币中公私钥、钱包和地址的由来和关系。感觉这部分比较少见,所以专门讲讲。

熟悉比特币的朋友一定知道,买卖比特币最终是通过一个钱包地址实现的,就像我们日常使用的银行卡号一样,随便找一个比特币钱包地址,我们一起来看看:

1QCXRuoxWo5Bya9NxHaVBArBQYhatHJrU7

现在,让我来给大家解释一下比特币的钱包地址是怎么来的,公钥和私钥是怎么来的,以及三者之间的关系。

众所周知,比特币是基于数学加密,而不是像银行卡那样基于信用。我们都熟悉基于信用系统的银行卡号。当我们向银行申请银行卡时,银行随机发出Yes,那么比特币钱包地址是怎么来的呢?

在《比特币:一种点对点的电子现金系统》一文中,中本聪提到了使用椭圆加密算法(ECDSA)来生成比特币的私钥和公钥。

基于椭圆加密原理,可以从私钥计算出公钥,然后通过一系列数字签名操作从公钥中得到比特币钱包地址。

因为比特币地址可以从公钥计算出来,所以我们经常把公钥和比特币地址混淆。它们都指的是同一个概念。比特币钱包地址只是另一种格式的公钥,但两者的外在表现形式不同。

然后我们可以整理一个上下文:

比特币私钥是什么_比特币私钥公钥地址_比特币 私钥丢失

私钥 - 公钥 - 比特币钱包地址

从比特币私钥获取我们日常转账使用的比特币钱包地址一共需要九步,中间使用了SHA256加密、RIPEMD160加密和BASE58编码。

第一步:生成随机私钥

私钥是一个随机数比特币私钥公钥地址,随机选择一个 32 字节的数字。这个数字的范围是1~0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141之间的一个数字,为​​了方便下面的计算,我们随机生成一个有效的私钥:

8F72F6B29E6E225A36B68DFE333C7CE5E55D83249D3D2CD6332671FA445C4DD3

第二步:通过椭圆曲线计算公钥

生成私钥后,我们使用椭圆曲线加密算法(ECDSA-secp256k1)计算出私钥对应的未压缩公钥。生成的公钥共有65个字节,其中一个为0x04 ,其中 32 个字节为 X 坐标,另外 32 个字节为 Y 坐标:

比特币 私钥丢失_比特币私钥是什么_比特币私钥公钥地址

公钥 PX:

06CCAE7536386DA2C5ADD428B099C7658814CA837F94FADE365D0EC6B1519385

公钥py:

FF83EC5F2C0C8F016A32134589F7B9E97ACBFEFD2EF12A91FA622B38A1449EEB

步骤 3:计算公钥的 SHA-256 哈希

结合以上公钥地址得到一个标准地址:

0406CCAE7536386DA2C5ADD428B099C7658814CA837F94FADE365D0EC6B1519385FF83EC5F2C0C8F016A32134589F7B9E97ACBFEFD2EF12A91FA622B38A1449EEB

比特币 私钥丢失_比特币私钥公钥地址_比特币私钥是什么

对齐SHA-256哈希计算,得到结果:

2572e5f4a8e77ddf5bb35b9e61c61f66455a4a24bcfd6cb190a8e8ff48fc097d

第 4 步:计算 RIPEMD-160 哈希

取上一步的结果,进行RIPEMD-160计算,得到结果:

0b14f003d63ab31aef5fedde2b504699547dd1f6

第五步:添加地址版本号(比特币主网版本号“0x00”)

取上一步的结果,在前面加上16进制的00比特币私钥公钥地址,即:

比特币私钥公钥地址_比特币私钥是什么_比特币 私钥丢失

000b14f003d63ab31aef5fedde2b504699547dd1f6

第 6 步:计算 SHA-256 哈希

取上一步的结果,进行SHA-256计算,可以得到:

ddc2270f93cc84cc6869dd373f3c340bbf5cb9a8f5559297cc9e5d947aab2536

然后,对上述结果再次计算 SHA-256 哈希值,得到:

869ac57b83ccf75ca9da8895823562fffb611e3c297d9c2d4612aeeb32850078

第7步:取上一步结果的前4个字节(8位十六进制)

比特币 私钥丢失_比特币私钥是什么_比特币私钥公钥地址

869ac57b

第 8 步:将这 4 个字节添加到第 5 步的结果中

作为校验位,在第五步的结果之后加载这4个字节,这是比特币地址的十六进制形式:

869ac57b000b14f003d63ab31aef5fedde2b504699547dd1f6

第 9 步:使用 Base58 编码转换地址

Base58对上一步的结果进行编码得到:

1QCXRuoxWo5Bya9NxHaVBArBQYhatHJrU7

这是我们经常看到的传统比特币钱包地址。

好了,这就是今天的全部内容。我希望它对每个人都有一些用处。不然就白写了。最后感谢大家的阅读,希望大家多多打赏~