区块链网站|NFTS 比特币地址 比特币私钥详细描述

比特币私钥详细描述

广告位

比特币私钥详细说明

私钥只是一个随机选择的数字。对一个比特币地址内所有资金的控制取决于对相应私钥的所有权和控制权。在比特币交易中,私钥用于生成支付比特币所需的签名,以证明资金的所有权。私钥必须一直保密,因为一旦泄露给第三方,就相当于放弃了私钥保护的比特币。私钥也必须备份,防止意外丢失,因为私钥一旦丢失,就很难恢复,它保护的比特币也就永远丢失了。

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

从随机数生成私钥

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

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

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

1e 99423 a4 ed 27608 a 15 a 2616 a2 b 0 e 9e 52 ced 330 AC 530 edcc 32 c8 ffc 6a 526 aedd

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

要使用比特币核心客户端生成新密钥(参见上一篇文章),可以使用getnewaddress命令。出于安全原因,命令运行后,只显示生成的公钥,而不显示私钥。如果希望bitcoind显示私钥,可以使用dumpprivkey命令。dumpprivkey命令以Base58校验和编码的格式显示私钥,这种格式称为钱包导入格式(WIF),在“私钥格式”一节中有详细说明。以下是使用这两个命令生成和显示私钥的示例:

$ bit coind get new address 1j 7 MDG 5 rbqyuhenydx 39 wvwk 7 fslpeoxzy

$ bitcoind dump privkey 1j 7 MDG 5 rbqyuhenydx 39 wvwk 7 fslpeoxzy kxfc 1 jmwwcoacicawz 3 exa 96 MBM 6 TB 3 tyzgmf 6 ywgdgwzgawvrtj

dumpprivkey命令只是读取钱包中getnewaddress命令生成的私钥,然后显示它。Bitcoind不知道私钥和公钥。除非密钥对存储在wallet中,否则dumpprivkey命令是有效的。

dumpprivkey命令无法从公钥中获取对应的私钥,因为这是不可能的。该命令只提取wallet中现有的私钥,即getnewaddress命令生成的私钥。您还可以使用命令行sx工具(参见“Libbitcoin和sx Tools”)来生成和显示带有newkey命令的私钥:

$ sx new key 5j 3 mbbah 58 cpq 3y 5 rnjpukpe 62 sq 5 tfc vu 2 jpbnkeyhfsyb 1 jcn

广告位
本文来自网络,不代表区块链网站|NFTS立场,转载请注明出处:https://www.qklwz.com/btb/qianbao/15879.html
上一篇
下一篇

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

返回顶部