主页 > imtoken官方网站 > DIY你自己的比特币私钥,更好地保护你的资产

DIY你自己的比特币私钥,更好地保护你的资产

imtoken官方网站 2023-09-26 05:13:07

比特币私钥生成器软件_比特币私钥生成网站_比特币私钥生成器

背景

本期将为您介绍这个有趣的项目。 我希望这篇文章可以帮助您更好地理解比特币密钥。

你需要的东西是:

铅笔、纸、生成二进制随机输出的东西(如硬币)和一台计算机。

这里的目的是让你做一些能帮助你学到更多东西的事情,而不仅仅是阅读纯理论。 非常重要的是,本教程的体验非常轻松,任何人都可以直接按照本文的操作参与体验。

比特币私钥生成网站_比特币私钥生成器软件_比特币私钥生成器

原创 | 阿曼

重要序言

不要将此密钥用于您实际持有的比特币。 请先按照本文进行练习。

当你为你实际持有的比特币制作真正的密钥时,如果你使用这种方法,你必须在密闭的计算机上制作它。 密闭的电脑一定不能连网。 如果您非常重视安全,仅仅暂时关闭普通计算机上的 wifi 连接是不够的; 即使您暂时与互联网断开连接,也有一些聪明的黑客可以提取您的私钥。

最后,如果您想使用此方法制作真正的钥匙,我将说明下一步该怎么做。

好的,让我们开始吧!

步骤 1 生成大的随机二进制数

你可以掷硬币 256 次来获得随机数,但我认为使用骰子更快更方便。 您可以购买赌场级骰子以确保公平、随机掷骰,但您也可以省钱并使用任何旧骰子。 即便你的骰子并不完美,有一些偏差,但从概率的角度来看,只要你一次多用几个,就会达到足够的随机性。

这是要采取的许多步骤之一:

拿四个左右的骰子。 将数字 1、2 或 3 视为 0 的输出,而 4、5 或 6 将是 1 的输出。这样,您将获得带有骰子的二进制输出(最终结果中只有 0 和 1 )

例如:投掷 3,记录为零; 卷 6,记录 1。滚动它们并从左到右阅读(规则是一致的并且是预先确定的,这对于保持随机性很重要)。 如果是关于哪个更左或更右,请再次掷骰子。 生成 23 行,每行 11 个数字。 第 24 行只需要三位数字。 对于每一行,将数字分成 4-4-3 组(见下图)以便于阅读和计算。 尽可能保持垂直列对齐,并在每行之间留出空间以供手动计算。 稍后这一切都会有意义。

像这个例子:

比特币私钥生成网站_比特币私钥生成器_比特币私钥生成器软件

比特币私钥生成器_比特币私钥生成器软件_比特币私钥生成网站

这里有 256 个二进制数字 - 23 组完整的 11 位数字,第 24 行只需要 3 位数字。

稍后您会更清楚地看到这一点,但现在,了解二进制中的每 11 位数字将转换为助记符。 总共256位随机二进制数,我们可以除以11得到助记词的字数。 但是 256 除以 11 的答案不是整数; 现在是 23.27。 我们的助记词中不能有 23.27 个单词。

我们还需要 8 位来形成第 24 个字。 一旦我们总共有 264 位,就可以将其很好地分成 24 组,每组 11 位,从而得到一个 24 字的助记符。 正如您稍后将看到的,最后八个额外的位会发挥作用。

关于随机性的注释:

你可以用任何你想要的方式生成这 256 位的随机数据,只要它实际上是随机的。 如果它不是随机的,那么别有用心的人很有可能能够复制您的数据。 然后他们将能够重新创建您的私钥并可以拿走您所有的比特币。

例如,如果您生成 256 位全零(显然不是随机的),则很有可能有人能够猜出您的私钥。

这就是证据:我从可怕的全零随机性中生成了一个私钥,并找到了某人现有的钱包。 如果它没有被清空,我可能会偷走资金。

比特币私钥生成器_比特币私钥生成器软件_比特币私钥生成网站

他们很清楚自己在做什么,因为数量很少,而且他们不会在地址上留下任何比特币。 谁知道呢,这可能是一场示威。 但其他人生成了可猜测的、非随机的私钥,结果丢失了他们的比特币。 但别担心,如果你制作了一个真正随机的私钥,有人将不得不准确地重复你的二进制骰子或硬币翻转,并且由于指数数学,这在宇宙的生命周期中不会发生。

步骤 2 计算校验和

需要计算最后缺失的八位数字以形成所谓的“校验和”。

什么是校验和?

校验和是计算机在您输入信用卡号或银行帐号等信息时发现错误的一种方式。 当您输入您的比特币私钥时,让您的计算机警告您输入错误是很有用的!

要计算校验和,您需要一台 Linux 或 Mac 计算机。 如果您使用的是 Windows 10,则可以从 Microsoft Store 安装 Ubuntu 应用程序(一种 Linux 版本)。 只需搜索“Ubuntu”并安装它。 您将使用 Ubuntu 终端运行以下命令。 该应用程序是一个临时会话; 没有文件存储在 Ubuntu 应用程序上。 这意味着您每次运行它时都会得到一个干净的会话。

Windows 用户需要执行此解决方法,这很麻烦。 我尝试了其他解决方法,但遇到了各种问题。

现在您的 Mac、Linux 或 Windows 10 计算机上已经有了终端,请输入以下命令。 用您自己的随机二进制数替换我的二进制数(请注意,这应该是一长行,尽管它可能看起来与此处显示的方式不同)。

echo 1010111100111000000011110110001111010111101001010010001011001111011110100011000010100011111100100010100011110001110101000110011111110000101000110001010111010001010011111110101001010011110110110110000001101111010011000001110101101001000010001000010000100111 | shasum -a 256 -0

如果您不习惯命令行,这可能很难理解。

我会拼写出来:

键入“echo”,然后是一个空格,然后是一系列没有任何空格的 0 和 1,然后是一个空格,然后是“管道”符号(通常在大多数键盘的键下方),然后是一个空格,然后是“shasum”命令、一个空格、一个连字符“a”、一个空格、“256”、一个空格、另一个连字符,然后是零。 然后按下。

代码说明:“echo”命令只是重复您接下来键入的任何内容。 管道符号(“|”)获取该输出并将其传递给管道符号右侧的命令(它将数据从左“管道化”到右!)。 比特流的接收者是“shasum”散列命令。 “-a”是指定要使用的算法的选项。 “256”代表比特币举世闻名的SHA-256,这是我们选择的“-a”。 最后,“-0”是一个选项,表示输入应解释为二进制数据而不是常规文本(又名 ASCII)数据。

当我运行这个命令时,我得到的哈希值显示在命令之下。 这是以“b184”开头的行:

比特币私钥生成网站_比特币私钥生成器软件_比特币私钥生成器

现在我们可以开始计算校验和了。 我们取哈希输出的前两位数字,在本例中为“b”和“1”(如上图所示)。 这些是十六进制数。 在十六进制中,我们不显示从 0 到 9 的数字,而是通过使用字母表中的字母来表示大于 9 的数字来计算到 15:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f

类似于扑克牌如何从 1 数到 13,使用它们自己的替换:

Ace, 2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, King

所以在我的散列中,我的第一个数字“b”代表 11。十六进制的“1”与我们习惯处理的“1”相同。

现在我们将这前两个数字转换为它们的四位二进制表示形式。 您可以参考下图执行此操作:

比特币私钥生成网站_比特币私钥生成器软件_比特币私钥生成器

▲ 四位二进制中的11为1011。四位二进制中的1为0001。(指令电路)

所以我们从 b 和 1,到 11 和 1,最后到 1011 和 0001。

这四位数字是我们将添加以完成第 24 个字的校验和的位!

将它们添加到第 24 行以完成最后一组 11 个二进制数字。 因此,您现在总共有 264 位数字(请参阅下图中第 24 行的操作方式)

Step 3 二进制转十进制

每组 11 个二进制数字都需要转换为十进制。

对于本练习,您可以将它们输入到在线二进制到十进制计算器中。 但是,对于您的真实钱包,我将向您展示如何手动操作。

关于二进制

在二进制数字系统中,只有 0 和 1。您知道的其他数字(2、3、4、5、6、7、8、9)都不存在。 所以向上计数,我们从 0 开始,然后是 1,但下一个数字是不寻常的。 没有可用的“2”。 所以 1 之后的下一个最大数字是“10”。 不要读成“十”,读成“一,零”。 在二进制中,“10”代表您习惯的“2”。 10(二进制)之后的下一个数字是“11”(“一,一”,而不是“十一”!)。 这等于十进制的“3”。 对于下一个数字“12”是不可能的,因为二进制中没有“2”位; 我们可以用零和一表示的下一个最大数字是“100”(“一,零,零”)。 这实际上是十进制的“4”。 那么101=5、110=6、111=7、1000=8、1001=9等等。

有 11 个二进制数字,最小的数字是零 (00000000000),最大的数字是 2047 (11111111111)。

我们将页面上的这 11 个二进制数字(每行)中的每一个都转换为十进制。 您可以手动完成,或从 Linux、Mac 或 Ubuntu 应用程序中的命令行转换它们。

对于号码 10101111001,您将输入:

回声“$((2#10101111001))”

您将获得“1401”的输出值。 只需更改 10101010101 以匹配每组 11 位数字并计算其十进制等值。

1401是怎么来的?

接下来,我将用笔和纸手动计算。

在页面的顶部,从右到左写下这个精确的数字序列,与下面的二进制数字垂直对齐:“1024”在二进制数字的第一列上方。 然后它在下一列中显示“512”。 然后是“256”。 依此类推,每次将数字减半,直到“1”出现在二进制数字的最后一列(第十一列)上方。

比特币私钥生成网站_比特币私钥生成器软件_比特币私钥生成器

现在看看你的第一行二进制数。 每当有“1”的时候,就在它的正上方加上十进制数,记在二进制数的下面。 如果有“0”,上面的数字将被忽略。 像这样:

比特币私钥生成器_比特币私钥生成器软件_比特币私钥生成网站

在此示例中,第 1024、256、64、32、16、8 和 1 列下有一个“1”。

将小数相加得出总数为 1401:

比特币私钥生成网站_比特币私钥生成器_比特币私钥生成器软件

现在对所有 24 行重复此操作:

比特币私钥生成网站_比特币私钥生成器_比特币私钥生成器软件

比特币私钥生成器软件_比特币私钥生成网站_比特币私钥生成器

您现在将拥有 0 到 2047 之间的 24 个十进制数。

第4步对应BIP 39词汇表

BIP 39 协议(比特币改进提案编号 39)指定了 2048 个不同的词,按字母顺序列出。 当代码读入这个列表时,每个单词都可以通过它在列表中的排序位置来识别。 您刚刚计算的数字将用于查找其对应的单词。 例如,第一行的结果是数字 1401,它等于有序的 BIP 39 词汇表中的单词“quality”。

零是您可以为一行计算的最小可能值(来自二进制 00000000000)。 在这种情况下,您会选择“abandon”,这是列表中的第一个词。

最大可能的数字是 2047(从 11111111111 开始)。 正确的单词是“zoo”,这是列表中的最后一个单词。 这是第 2047 个字。

有一点需要注意:计算机从零开始计算项目。 所以列表中的第五项是计算机的编号 4。

这种额外的混乱是不幸的。 BIP 39 单词的官方规范在 GitHub 上,但单词列表显示的行号以 1 而不是 0 开头。因此,尽管“抽象”是第 8 个单词并列在第 8 行,但其实际的 BIP 39 数字等效值为 7。

比特币私钥生成器软件_比特币私钥生成器_比特币私钥生成网站

我的第一行 11 个二进制数字加起来就是 1401 个十进制数。 所以在 Github 的列表中,我必须在第 1402 行 (1401+1) 找到这个词。 这个词就是“质量”。 继续寻找每个小数点——注意在你的计算中多加 1 以匹配 Github 的行号——并找到 24 行中每一行的单词。

比特币私钥生成网站_比特币私钥生成器软件_比特币私钥生成器

比特币私钥生成器_比特币私钥生成网站_比特币私钥生成器软件

如果你坚持这一步,那就太好了!

你现在有一个有效的 24 个字符的比特币种子短语。 你现在应该把它扔掉——除非你使用完全手动的方法,否则你不能将它们用于你的比特币,因为它们不是在安全的环境中创建的!

其实,在投出之前,你可以把这些词输入到硬件或软件钱包中,看看会不会被拒绝。 如果它被拒绝,那么你在某个地方犯了错误,因为使用这种手动方法很容易出错。 如果任何地方有任何错误,校验和将不匹配,所有钱包将立即发出错误信号。

真正的比特币私钥练习

您确实需要在密闭计算机上生成密钥。

您可以在这里学习构建便宜的 10 美元 Raspberry Pi 零气隙计算机,购买现成的计算机,或者如果您有一些额外的钱,您可以构建没有任何 wifi 或蓝牙组件的定制台式计算机。 Raspberry Pi 这个选项很便宜,但是电脑速度很慢,所以要注意。 如果您想在多重签名设置中拥有许多分布式密钥比特币私钥生成器软件,那就太好了。

除了安全地生成密钥之外,您还必须考虑存储和复制或分发。

为了大大降低您被黑客攻击或丢失的风险比特币私钥生成器软件,下一个级别是学习多重签名钱包。

如果您处于存储的单一签名密钥阶段(你们中的大多数人都是),那么您真的应该将助记词保存在硬件设备中。 大多数人让硬件钱包 (HWW) 制作他们的密钥,而从不在密闭计算机上验证该密钥。 这对大多数人来说都很好。 但是,如果您多疑,您应该验证密钥是否生成了您期望的公钥和地址。

既然你知道如何安全地制作自己的密钥(根据上面完全手动的离线方法),你就不必信任 HWW 来生成好的密钥。 您首先自己制作一个新密钥,然后您“恢复”钱包并将新计算的单词输入设备,而不是在硬件设备上创建新钱包。 然后这些词被“锁定”在 HWW 中并受您的 PIN 保护。

因此,硬件设备是您私钥的数字保险箱。

您永远不应该只有一份私钥副本。 如果你丢失了它,你将丢失所有存储在密钥中的比特币。 从技术上讲,设备中没有比特币; 他们在区块链上。 正如我所说,硬件钱包是您的私钥的数字保险箱,由您刚刚制作的文字表示。

HWW 中的代码使用数学函数从私钥计算您的扩展公钥,然后从扩展公钥中以数学方式导出许多单独的公钥。 这些中的每一个都可以用来计算一组看似无限的地址。 一切都在私钥的下游。 您可以在不同的设备中输入您的私钥,它会可靠地(在数学上)生成完全相同的一组公钥和地址。 更多细节在这里。

这么说的目的是让你意识到比特币的存储方式就好像它们存储在你创建的 24 个单词上一样——而不是硬件钱包。 你应该非常非常小心地备份这些词,以保证它们免受小偷和自然灾害的侵害。 如果你制作副本并将它们存储在不同的位置,一个地方发生火灾不会导致你丢失所有比特币,因为你在其他地方会有副本。

私钥传递和存储

一旦您在密闭的计算机上生成了密钥并非常安全地备份了它们,就该考虑如何将它们传递给您的后代了。

让受信任的第三方持有您的密钥,或者您可以以不信任的方式进行计划——我的偏好。 我很乐意帮助有需要的人。

快乐的比特币。

比特币私钥生成器_比特币私钥生成网站_比特币私钥生成器软件