第四章 不可完成的任务

“我没有开玩笑麦窦,我此刻很清醒,是的,你没有听错,我们需要你破解非对称加密算法和哈希算法生成的公钥和私钥。”香瑾安然若素道,她的镇定自若让麦窦不再怀疑自己听岔了,对的,人家就是要自己破解生成比特币公钥、私钥的算法!

这个香瑾看上去兰心蕙性、淑逸闲华,没有什么不正常的地方,咋个会提出这样的要求,这可比登天还要难啊!

香瑾这人看着正常睿智,别是神经有问题吧,或者在家里闲得无聊了,让香影带人来忽悠玩、给她解闷,有意思吗,拿我打擦!

要是你知道破解比特币私钥有多难,你就晓得麦窦这货为何如此这般表现了。

要知道生成一个比特币私钥在本质上与“在1到2^256之间选一个数字”无异。只要选取的结果是不可预测或不可重复的,那么选取数字的具体方法并不重要。比特币软件使用操作系统底层的随机数生成器来产生256位的熵(随机性)。通常情况下,操作系统随机数生成器由人工的随机源进行初始化,也可能需要通过几秒钟内不停晃动鼠标等方式进行初始化。

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

说得再通俗易懂一点吧,私钥就是256位二级制组成的,也就是2^256(2的256次方),这是一个非常大的数字。用十进制表示的话,大约是10^77(10的77次方),天文物理学家们估计,我们这个可见的宇宙大约只含有10^80(10的80次方)个原子。

这是什么一个概念呢?

举个简单的例子:一滴水大概有10^21个原子,现在你知道有多少了吧!

计算一滴水的原子数量已经很恐怖了,而比特币的私钥是要你计算我们这个宇宙量级的原子数量!!!

现在你知道什么叫比登天还难了吧,不,这不是登天,这实实在在就是一个不可能完成的任务!