主页 > imtoken硬件钱包安全吗 > 什么是比特币私钥、公钥和地址?

什么是比特币私钥、公钥和地址?

imtoken硬件钱包安全吗 2023-11-07 05:10:19

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

比特币私钥生成导出_我有比特币私钥在哪里_比特币私钥数据库

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

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

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

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

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

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

公钥是由私钥生成的,通过椭圆曲线(ECPoint)生成,一个私钥经过椭圆曲线变换之后会生成一个65个byte的数组,一般我们会看到这样的一个公钥:04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235,公钥一般它显示经过 hex(十六进制)处理后的字节数组。 与私钥的Base58不同,公钥用于解锁私钥签名的数据。 使用私钥对交易进行签名后,会把自己的公钥一起发送出去,私钥签名的数据可以用公钥解密。 只有发送公钥后,缺席者才能验证私钥签名的正确性(是否可以解锁)。 私钥和公钥成对出现,一个私钥只有对应的公钥才能解开公钥签名的数据,地址也是由公钥生成的,这样就可以验证是否花费了交易属于这个地址。

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

对私钥进行Base58编码时,支持不压缩公钥的私钥实际上是一个33位的字节数组,第一位存储版本信息,当前值为128。支持压缩公钥的私钥keys是34位,第一位是版本信息,它的值也是128,多出来的位是最后一个字节,用来存放是否压缩信息,1表示支持压缩格式中的公钥和5开头的私钥都是不支持压缩格式的私钥,L和K开头的都是支持压缩格式的私钥。

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

生成过程是先对公钥做一个SHA256,然后对得到的结果做一个RIPEMD160,再从结果中取出一个20字节的数组。 得到的数组就是得到的hash160,例如:9a1c78a507689f6f54b847ad1cef1e614ee23f1e,在这个20-bit地址的字节数组前面加上一个字节,就是地址的版本信息(当前为0)。 得到一个21位的字节数组。 它上面的base58转换就是我们看到的address,也就是说hash160和Addresses的和相互转换。

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

这为您简要介绍了私钥、公钥和地址。