主页 > tp钱包和imtoken钱包通用吗 > 比特币base58源码解析_什么是比特币私钥、公钥和地址?

比特币base58源码解析_什么是比特币私钥、公钥和地址?

tp钱包和imtoken钱包通用吗 2023-03-20 06:39:59

19cd4058640f0982e894c199aab80da5.png

这是比特币中经常出现的三个词,它们是什么意思呢?它们之间是什么关系?

ef947843775994572af331366cc09c4f.png

我们先说私钥,比如这样的字符串:

比特币私钥公钥地址

5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss,这是一个私钥。只要正确支持比特币协议的应用程序可以将此字符串识别为私钥,将其转换为公钥,然后再转换为地址,如果对应的地址上有比特币,就可以使用私钥花费以上比特币。公钥和地址的生成依赖于私钥,所以私钥是比特币世界中最重要的。有了私钥,就可以生成公钥和地址,就可以消费对应地址上的比特币了。私钥花费比特币的方式是签署(加密)该私钥拥有的未花费交易。

私钥本质上是一个32字节的数组,1字节等于8位二进制,而一个二进制只有两种可能,0或1,所以私钥总数为2^(8*3 2)=2^256,这个数字已经超过了宇宙中原子的总数,不可能遍历所有的私钥,耗尽整个太阳的能量。我们所说的比特币私钥是密码学的安全,不是说不可能有重复的私钥,而是不可能通过遍历所有的私钥,或者其他方法找到上面有比特币的私钥,所以私钥就是密码,学习起来很安全.

比特币私钥公钥地址

私钥的总数非常大,但是私钥的生成依赖于随机性。不依赖随机性会大大降低生成私钥的概率空间,而密码学是安全的随机性意味着随机性是不可预测的,随机性的结果无法遍历。只有加密安全且随机生成的私钥可用于存储比特币。如果随机性不安全,你得到的私钥可能会和别人一样,所以你的比特币可能会丢失。

32 字节的数组由 256 个 0 或 1 组成。如果显示出来,不仅是识别率太高太差而且太长。所以私钥会转换成上面的,上面的私钥转换成Base58为一个32字节的数组,Base58是比特币使用的唯一编码方式,主要用于生成比特币的钱包地址和私钥。与Base64相比,Base58没有使用数字“0”、大写“O”、大写“I”、小写“l”,以及“+”和“/”符号。主要是为了方便肉眼识别,输入的时候不容易出错,但我更喜欢用二维码扫描私钥。毕竟,上面的不规则字符串输入起来相当费劲。 .

比特币私钥公钥地址

除了我们看到的以5开头的私钥外,还有以“L”和“K”开头的私钥,为什么会这样呢? 5,L,K又是什么乐队代表什么?这部分的内容是关于公钥的。

公钥由私钥生成,由椭圆曲线(ECPoint)生成。 After a private key is transformed by the elliptic curve, it will生成一个65个byte的数组,一般我们会看到这样的一个公钥:04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235,公钥一般是把byte数组是经过hex(16进制)的处理之后显示出来的,不同的是公钥的Base58,用来解锁私钥签名的数据。用私钥签署交易后,它会一起发送自己的公钥。私钥签名的数据可以使用公钥解密。公钥发送后,私钥只能通过旷工进行验证。签名的正确性(是否可以解锁),私钥和公钥成对出现,私钥签名的数据只能通过对应的公钥解锁,地址也是从公钥生成的,这样就可以验证花费的交易属于这个地址。

比特币私钥公钥地址

至于为什么会有以5开头或以L和K开头的私钥,问题出在公钥上。示例中的私钥不仅包含一个 32 字节数组的信息,还包含私钥的版本。信息和公钥是否被压缩,早期的比特币开发者并不知道生成的公钥可以被压缩。压缩后的公钥只有 33 个字节,而未压缩的公钥只有 65 个字节。压缩后的公钥对比特币来说更有意义,因为比特币是一种去中心化的p2p加密货币,每个节点都会有完整的交易记录,除了coinbase(挖出来的比特币),每笔交易都会发送公钥,支持公钥在压缩后的格式比特币私钥公钥地址,交易数据会减少32字节,对整个比特币网络非常有意义,整个比特币网络的数据会减少很多。

当私钥为Base58编码时,支持未压缩公钥的私钥实际上是一个33位字节数组,第一位存储版本信息,当前值为128。支持压缩的私钥公钥为34位,第一位是版本信息,其值也是128,额外的一位是存储压缩信息的最后一个字节,1表示支持压缩格式公钥,私钥以5开头是不支持压缩格式的私钥,而L和K是支持压缩格式的私钥。

比特币私钥公钥地址

公钥是否压缩不仅影响私钥的显示,还影响地址。地址是由公钥生成的,你看到的地址是经过Base58编码处理的。地址的生成比较复杂。在说地址之前,我们不得不说一下hash160。地址由公钥生成,但公钥生成地址。首先会生成一个 hash160。

生成过程是先对公钥做SHA256,再对得到的结果做RIPEMD160,然后从结果中取一个20字节的数组,得到的数组就是得到的hash160,例如:9a1c78a507689f6f54b847ad1cef1e614ee23f1e,加这个20位字节数组前面的一个字节,就是地址的版本信息(目前0)得到一个21位字节数组,对它进行Base58转换就是我们看到的地址,意思是hash160和可以转换成地址。

一个私钥可以有一个压缩公钥和一个未压缩公钥,每个公钥都会生成一个地址,上面的私钥会有两个地址:1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzN(未压缩公钥),1F3sAm6ZtwLAUnj7d38pGFxtP3RVEvtsbV(压缩公钥)比特币私钥公钥地址,这些两个地址就是这个私钥的地址,每个地址上的钱都可以用来支付这个私钥的费用。但目前大多数应用程序都支持压缩格式的私钥。

这里将给大家简单介绍一下私钥、公钥和地址