币圈子-打造专业区块链媒体平台

比特币私钥是什么?如何生成比特币私钥?

2019-05-15 16:04:48 | 来源:互联网 | 87731人阅读 | 作者:币圈子
全文导读
如何生成比特币私钥?近年来,很多人都把投资的目光,从理财产品上面,转移到了数字货币上来,提到数字货币的投资,很多人第一个想到的肯定就是比特币了,从最开始的几元一枚,疯涨到现在的几千元以内,比特币给人带来的收益,可以说是

如何生成比特币私钥?近年来,很多人都把投资的目光,从理财产品上面,转移到了数字货币上来,提到数字货币的投资,很多人第一个想到的肯定就是比特币了,从最开始的几元一枚,疯涨到现在的几千元以内,比特币给人带来的收益,可以说是无法想象的,也可以说是独一无二的,很多朋友在投资比特币之后,就开始担心他的安全问题,怎样给他,生成一个私钥呢?其实方法特别简单,小编就在这里来教大家。如果你拥有比特币,你可能最关心的是余额,而决定余额的是私钥,所以你最应该关心的,其实是私钥。当我们谈到比特币安全相关的问题时,我们也会提到私钥,之前的文章《比特币的助记符是什么》里提到的助记符,其实也可以理解为私钥的一种表现形式,但私钥究竟是什么?也许鲜有人知道。

比特币私钥是什么?如何生成比特币私钥?

私钥是什么

私钥是一个256位的随机数

私钥的定义非常简单,但其中有2个专业术语可能会使不了解计算机的同学感到困惑,一个是256位,另一个是随机数,下面内容是该定义的白话文解释,已经理解了的同学可以跳过:

256位 - 字面上很容易被理解为256个十进制数字,其实不是的,因为计算机是用二进制来存储和计算的,所以256位指代的是256个二进制数字,下图是一个例子

随机数 - 意思是这个数的产生没有规律

私钥是一个数字,这个数字可以取从0到2²⁵⁶-1之间的任意值。

私钥可以被破解吗

看到这里,你可能也会产生和我一样的疑惑——私钥也太简单了把,我随便写一个数,只要不超过最大值,就可以用作私钥,对吗?是这样的,没错。

那按照私钥可以算出公钥,公钥可以产生地址的逻辑,岂不是我随便选一个数作为私钥,然后算出它的地址,如果这个地址上正好有未使用的比特币,是不是就代表我破解了别人的账号呢?

年轻人,你说得没错,其实我一开始也是这样想的,虽然现在回想起来觉得有点Naive……

虽然私钥只是一个简单的数字,但它仍然很难被破解,原因在于这个数字的集合足够大,大到我们很难穷尽所有数字,并对它们进行逐一的验证。2的256次方近似于10的77次方,10的77次方有多大,我再举个例子你就清楚了

到目前为止,人类可观测的宇宙中的原子数约为10的80次方

进一步,因为这个数的范围很大,所以我们能猜中一个正确私钥的概率就变得非常低,假设地球上使用比特币的人数达到100亿,也就是10的10次方,则你猜中一个比特币私钥的概率是

这个概率到底有多小呢,我再给你举两个例子:

"双色球"一等奖的中奖概率是8*10ˉ⁸。——摘自《中国福利彩票的中奖概率》

从全世界范围来看(假设全世界人口为70亿),一年中每个人遭遇雷击的概率是175万分之一(5*10ˉ⁷)。——摘自中国气象局-《遭遇雷击的概率有多高》

说明什么呢?说明被雷击中的概率 > 抽中500万的概率 >> 猜中比特币私钥的概率

上面的不等式中,我用了>>这个符号表示远远大于

从概率的角度,我们确实很难破解私钥,但此时你可能会问,彩票一等奖和被雷击中很难发生,在于它们发生的频率很低,但计算机不一样,计算机的计算速度很快,我们可以很容易的利用计算机的处理速度,来提升猜中私钥的可能性,也就是快速计算10的67次方个私钥,总有一次猜中把。

是的,通过这种暴力破解的方法确实可以实现破解比特币的私钥,但它要付出的代价也是极其高昂的,下面我们就来做个试验。

我在我的Macbook Pro 2015版上运行了一条命令

$ begin=`date +%s`; for ((i=0;i<10;i++));do bx="" seed="" |="" bx="" ec-new="" |="" bx="" ec-to-public="" |="" bx="" ec-to-address="" |="" xargs="" -i@="" ./btc_balance="" -addr="" @=""> /dev/null; done; end=`date +%s` ; echo `echo "scale=2;$end-$begin" | bc`

15

这条命令看不明白没关系,我来介绍下它的功能:

这条命令会随机产生10个比特币的私钥和地址,并获取它的余额,这是暴力破解的基本步骤(其实还差一步判断余额是否大于0,如果大于0就代表猜中了,但我们这里只预估成本,可以省去这一步),产生10个私钥的目的是为了利用计算机的并行能力,因为我的CPU有4个核心;这条命令还会输出程序运行所需要的时间,可以看到最后一行的15表示运行了15秒

利用这个程序的输出,我们就可以计算出猜中一个私钥需要花多长时间了,猜10个私钥需要15秒,那么10⁶⁷次猜测,需要

注意,经过换算,等式右边的单位已经是年了,通过简单的实验和计算,我们可以估算出,想要暴力破解比特币私钥,几乎是不可能完成的任务。

使用安全的算法产生私钥

即便私钥的设计已经足够安全,但如果使用不当,仍然会产生严重的后果,正如统计结果显示:目前还是有很多人使用1234567作为他们的账户密码——就是一个典型的例子。我们不要自己去生成私钥,最好借用比特币软件,例如钱包或bitaddress.org这样的站点来帮你产生私钥,这里简单介绍下这些软件产生私钥的原理,大致分为3个步骤:

产生一个很长的随机字符串(随机源)——例如bitaddress.org网站就是通过捕捉人们滑动鼠标的随机行为来产生随机源的。

将步骤1的数据输入到SHA256 hash算法,输出一个256位的数确保产生的数在私钥规定的范围之内,否则重新回到第1步

好了,通过对以上的总结,大家对虚拟币的各个方面有没有了很深的了解呢?希望这篇文章会解答一下您的疑惑和让您对您的币种更加了解,会更加深入了解虚拟币。希望大家收获多多,钱包越来越鼓最后虚拟币也有一定的风险,希望大家量力而行,要谨慎客观的分析各方面的因素,综合自己的自身条件来考虑到底要不要选择一个币种。希望本篇文章会帮助到你。如果有其他需要,大家也可以继续多关注关注我们的文章,会不定时的推送,希望大家通过阅读我们的文章对您的虚拟币会有一个更加清晰的了解那么谢谢您的阅读。

温馨提示:文章不代表币圈子立场,不构成任何投资建议,谨防风险!本文来源于币圈子网站,转载请注明出处!侵权必究!
相关阅读
扩展阅读