教程网

您现在的位置是: 首页 > 聚焦

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

比特币私钥是什么?如何生成比特币私钥?
如何生成比特币私钥?近年来,很多人都把投资的目光,从理财产品上面,转移到了数字货币上来,提到数字货币的投资,很多人第一个想到的肯定就是比特币了,从最开始的几元一枚,疯涨到现在

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

私钥是什么

私钥是一个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步

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

eos私钥怎么生成?这是所有想要投资比特币的朋友都需要学习的一个技术,那么下文将教你如何轻松生成eos私钥。

第一步:生成eos密钥对(key-pair)

1.访问EOS Token Generator,

看到如下界面

这个页面是由@nadejde基于eos官方源码开发的,他只保留了生产密钥的功能,其他的都去除了。感兴趣的,可以看他的原始文章:https://steemit.com/eos/@nadejde/eos-key-generator,

代码在这:https://github.com/Nadejde/eos-token-sale

官方代码在这:https://github.com/EOSIO/eos-token-distribution

2.点击Generate EOS key

过一会就会生成你的密钥对:

一定把你的私钥(private key)保存好了,私钥是没办法恢复的,切记切记。

第二步:注册/映射eos密钥

注册eos密钥就是把刚才生成的密钥对建立映射关系,把公钥映射到以太坊地址上。在整个代币分发过程结束后的48小时后,erc20 代币将不能转移,而是根据映射的密钥重新生成eos区块链。

这么说好像挺复杂,简单来说就是这个过程很重要,记住这点就行了。

不过也请放松,2018年7月3号还很遥远,你有大把时间把这事情搞清楚。

注册/映射你的eos密钥对只需要在整个ico完成前进行就可以了。

你只需要注册/映射eos密钥一次就行了,注册多次只是浪费钱,除非你想更新密钥映射。

下面就是注册/映射eos密钥的步骤:

1、访问这个地址https://www.myetherwallet.com/#contracts

2、在Select Existing Contract下拉列表中选择eos contribution

3、点击access

4、这时会在access下出现这些内容:

在select a function下拉框中选择register

5、然后会出现新的内容:

在key 这栏输入你的公钥,注意是公钥。

6、然后解锁你的钱包:

7、点击解锁

8、然后,点击write

9 这时弹出一个提示框

转账数额设为0,gas limit用默认的就行,如果钱包没有帮你自动生成gas limit,就写:90000;如果交易失败了,就提高gas limit。

10、点击生成交易。

11、点击“是的,我确定!发送交易”

12、如果一切顺利,会在页面底部出现一个绿色条,包含着一链接。

有什么办法生成比特币公私钥地址?地址对于保密来说十分重要,我们需要选择一个合适的公私地址来进行保密,生成的地址可以让数据更加安全,更加不容易被抢走。生成的方法也有所讲究,我们需要先了解一下它们是什么,如何进行工作的,这样我们就有一个更好的认知来进行设计,让我们的工作变得更好。也可以增加我们对于这方面的知识,使我们下次也有了这样解决问题的经验。

私钥本质上是随机数,我们所说的比特币私钥的是密码学上面安全的,并不是说不可能出现重复的私钥,而是说不可能通过遍历的方式找到某一个特定的私钥,或者通过其它的方式找,而不通过私钥就能花费地址上面的比特币,私钥的安全性是由数学上保证的。

私钥的总数量很大,但是私钥的生成是依赖随机数的,真正的随机是很难做到的,大部分私钥的生成都是依赖于伪随机算法(PRNG)。伪随机是用函数生成随机数。它并不真正是随机的。只是一个比较近似真随机的随机数。椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟

椭圆曲线加密法(ECC)是一种公私钥加密技术:

ECC以椭圆曲线理论为基础,利用椭圆曲线等式的性质来产生密钥,而不是采用传统的方法利用大质数的积来产生,其特点是:密钥长度小,安全性能高,整个数字签名耗时小。

DSA(DigitalSignature Standard)数字签名技术:

在DSA数字签名和认证中,发送者使用自己的私钥对文件或消息进行签名,接受者收到消息后使用发送者的公钥来验证签名的真实性。显示出的公钥一般把byte数组是经过hex(16进制)的处理之后显示,不经过Base58的原因是: 公钥是用来验证私钥的签名,一般我们很少会看到公钥,使用私钥签名交易之后,会把自己的公钥一起和交易发送出去,这样对于一个完整的交易开说,他就使用交易里包含的公钥验证私钥的签名是否正确。

私钥和公钥是成对出现的,一个私钥签名的数据,只有对应的公钥才能对其进行验证,而地址也是从公钥生成的,这样就可以验证花费的交易是不是属于这个地址了!

 1/3    1 2 3 下一页 尾页