私钥

私钥只是一个随机选择的数字。对私钥的控制是用户对与相应的比特币公钥关联的所有资金的控制的根源。私钥用于创建签名,用于在交易中证明对用于支付比特币的资金的控制权。私钥必须始终保密,因为将其透露给第三方等同于将对其保护的比特币的控制权交给他们。私钥还必须备份和保护免受意外丢失,因为如果丢失了,就无法恢复,由其保护的资金也将永远丢失。

比特币私钥只是一个数字。你可以随机选择私钥,只需使用硬币、铅笔和纸:将一枚硬币抛掷 256 次,你就得到了一个随机私钥的二进制数字,可以用于比特币钱包。然后,公钥可以从私钥生成。但要注意,任何不完全随机的过程都可能显著降低私钥及其控制的比特币的安全性。

生成密钥的第一步,也是最重要的一步,是找到一个安全的随机源(计算机科学家称之为熵)。创建比特币密钥几乎与“在 1 到 2^256 之间选择一个数字”相同。只要选择的方法不可预测或不可重复,使用的确切方法就无关紧要。比特币软件使用加密安全的随机数生成器来产生 256 位的熵。

更准确地说,私钥可以是从 0 到 n - 1(包括 n)之间的任何数字,其中 n 是一个常数(n = 1.1578 × 10^77,略小于 2^256),定义为比特币中使用的椭圆曲线的阶(请参阅“椭圆曲线密码学解释”)。为了创建这样的密钥,我们随机选择一个 256 位的数字,并检查它是否小于 n。在编程术语中,通常通过将大量随机位串,从一个加密安全的随机源收集而来,输入到 SHA256 哈希算法中来实现,这将方便地产生一个可以解释为数字的 256 位值。如果结果小于 n,我们就有了一个合适的私钥。否则,我们只需使用另一个随机数再次尝试。

不要编写自己的代码来创建随机数,也不要使用编程语言提供的“简单”随机数生成器。使用具有足够熵源的加密安全伪随机数生成器(CSPRNG)的种子。研究你选择的随机数生成器库的文档,确保它是加密安全的。正确实现 CSPRNG 对密钥的安全性至关重要。

以下是以十六进制格式显示的随机生成的私钥(k)(256位显示为64个十六进制数字,每个4位):

1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD

比特币的私钥空间大小(2^256)是一个难以想象的大数。它约为10^77,以十进制表示。作为比较,可见宇宙估计包含10^80个原子。

Last updated