主页 > imtoken唯一官网 > 什么是比特币私钥?比特币私钥详解

什么是比特币私钥?比特币私钥详解

imtoken唯一官网 2023-04-07 05:05:34

什么是比特币私钥?

私钥

先说私钥。 一般我们看到的私钥是像下面这样的字符串:

5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss

比特币 私钥 密码_比特币 私钥 地址 关系_比特币的私钥是什么

支持比特币协议的应用程序可以将这个字符串正确转换成比特币私钥,再转换公钥得到地址。 如果地址上有对应的比特币,就可以用这个私钥在上面消费比特币。

私钥本质上是一个随机数。 私钥本质上是一个随机数,一个 32 字节的数组。 一个字节等于8位二进制比特币的私钥是什么,一个二进制只有0或1两个值。所以私钥总数将近2^(8*32)=2^256,但有些私钥不能用,而它的真实大小介于:1 ~ 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48之间的数A03B BFD2 5E8C D036 4141。这个数已经超过了宇宙中原子的总数。 不可能遍历所有的私钥,耗尽整个太阳的能量。

我们所说的比特币私钥在密码学上是安全的。 并不是说不能有重复的私钥,而是说不可能通过遍历找到具体的私钥,或者通过其他方式找到。 ,地址上的比特币可以不使用私钥进行消费,从数学上保证了私钥的安全性。

私钥总数很大,但是私钥的生成依赖于随机数。 真正的随机性很难实现。 大多数私钥的生成依赖于伪随机算法 (PRNG)。

伪随机是使用函数产生随机数。 这不是真的随机的。 它只是一个更接近真正随机性的随机数。

私钥生成的随机性非常重要。 加密安全随机性是指:

随机性是不可预测的,随机结果是无法遍历的。 如果不是安全的随机数生成器,生成的私钥可能会被其他人冲撞。 不依赖于随机生成的私钥大大降低了它们生成的概率空间。

公钥和地址的生成依赖于私钥比特币的私钥是什么,所以我们只需要保存私钥即可。 有了私钥,就可以生成公钥和地址,就可以消费对应地址上的比特币了。

字符串的私钥

上述改进后的私钥串是由32位字节的数据按照一定的规则格式化生成的。 32字节的数组由256个0或1组成,如果显示出来,不仅识别率不高,而且私钥太长。

所以私钥串就是将原始的随机数转换成识别率高的形式。 对于 32 字节数组,上面的私钥被转换为 Base58。

Base58是比特币特有的编码方式,主要用于生成比特币钱包地址和私钥。 与Base64相比,Base58没有使用数字“0”、大写“O”、大写“I”、小写“l”,以及“+”和“/”符号。 这样做的主要原因是肉眼容易识别,打字时不容易出错。

不过输入上面的不规则字符串还是比较费力的。 当然,你也可以将私钥转换成其他形式,比如词的形式(12或24个词),脑钱包的形式,或者你自己。 某句生成私钥,注意脑钱包生成的随机私钥安全性不高。

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

比特币 私钥 地址 关系_比特币 私钥 密码_比特币的私钥是什么

比特币私钥详解

私钥只是一个随机选择的数字。 对比特币地址中所有资金的控制取决于相应私钥的所有权和控制权。 在比特币交易中,私钥用于生成支付比特币所需的签名,以证明资金的所有权。 私钥必须时刻保密,因为如果泄露给第三方,受私钥保护的比特币也随之丢失。 私钥也必须备份,以防不慎丢失,因为一旦丢失,私钥就很难找回,它所保护的比特币也就永远丢失了。

比特币私钥只是一个数字。 你可以用硬币、铅笔、纸随机生成你的私钥:抛一枚硬币256次,用纸笔记录正反面转换成0和1,随机的256位二进制数即可用作比特币钱包的私钥。 这个私钥可以进一步生成一个公钥。

从随机数生成私钥

生成密钥的第一步也是最重要的一步是找到足够安全的熵源,即随机源。 生成比特币私钥本质上是“在 1 到 2256 之间选择一个数字”。 只要选择的结果不可预测或不可重复,选择数字的确切方法并不重要。 比特币软件使用操作系统底层的随机数生成器来生成 256 位的熵(随机性)。 通常,操作系统的随机数发生器是由人为随机源初始化的,也可能需要通过摇动鼠标几秒钟来初始化。 对于真正的偏执狂,掷骰子并用铅笔和纸做笔记。

更准确地说,私钥可以是 1 到 n-1 之间的任意数字,其中 n 是一个常数(n=1.158*1077,略小于 2256),由比特币使用的椭圆曲线的阶数定义。 要生成这样的私钥,我们随机选择一个 256 位数字并检查它是否小于 n-1。 从编程的角度来看,它通常是一个 256 位的数字,可以通过从加密安全的随机源中获取一长串随机字节并使用 SHA256 哈希算法对其执行运算来轻松生成。 如果运算结果小于n-1,我们就有了合适的私钥。 否则,我们用另一个随机数再次重复它。

本书强烈建议读者不要使用自己的代码或使用编程语言内置的简单随机数生成器来获取随机数。 我们建议读者使用加密安全伪随机数生成器 (CSPRNG),其种子来自具有足够熵的源。 使用随机数生成器库时,请仔细阅读其文档以确保它在密码学上是安全的。 CSPRNG的正确实现是密钥安全的关键。 下面是一个随机生成的私钥(k),用十六进制表示(256位二进制数,显示为64位十六进制数,每个十六进制数占4位):

1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD

比特币私钥空间的大小是2256,这是一个非常大的数字。 以十进制表示,大约是 1077,可见宇宙估计只包含 1080 个原子。

要使用 Bitcoin Core 客户端生成新密钥(请参阅上一篇文章),请使用 getnewaddress 命令。 为了安全起见,命令运行后只显示生成的公钥,不显示私钥。 如果想让bitcoind显示私钥,可以使用dumpprivkey命令。 dumpprivkey 命令将以 Base58 校验和编码格式显示私钥。 这种私钥格式称为钱包导入格式(WIF,Wallet Import Format)。 在“私钥格式”部分有详细解释。 下面给出了使用这两个命令生成和显示私钥的示例:

$ bitcoind getnewaddress 1J7mdg5rbQyUHENYdx39WVWK7fsLpEoXZy

$ bitcoind dumpprivkey 1J7mdg5rbQyUHENYdx39WVWK7fsLpEoXZy KxFC1jmwwCoACiCAWZ3eXa96mBM6tb3TYzGmf6YwgdGWZgawvrtJ

dumpprivkey命令只是读取钱包中getnewaddress命令生成的私钥并显示出来。 bitcoind 不知道公钥中的私钥。 dumpprivkey 命令只有在密钥对存储在钱包中时才会起作用。

dumpprivkey 命令无法从公钥中得到对应的私钥,因为这是不可能的。 该命令只是提取钱包中已有的私钥,即提取getnewaddress命令生成的私钥。 您还可以使用命令行 sx 工具(请参阅“Libbitcoin 和 sx 工具”)通过 newkey 命令生成和显示私钥:

$ sx 新密钥 5J3mBbAH58CpQ3Y5RNJpUKPE62SQ5tfcvU2JpbnkeyhfsYB1Jcn

比特币私钥丢失怎么办什么是比特币私钥? 如何在比特币钱包中导入和导出私钥?