码迷,mamicode.com
首页 > 其他好文 > 详细

比特币私钥生成

时间:2017-10-31 15:51:28      阅读:949      评论:0      收藏:0      [点我收藏+]

标签:write   title   bytes   源码   href   orm   get   比特币   void   

比特币突破4万人民币一个了,于是下了份源码来研究研究。

重点分析下比特币私钥生成的原理,看能否重现私钥的,只要有私钥这个随机数就相当于拥有了整个账户,然而看到了这一句:

根据CPU当前性能来生成:

void RandAddSeed()
{
// Seed with CPU performance counter
int64_t nCounter = GetPerformanceCounter();
RAND_add(&nCounter, sizeof(nCounter), 1.5);
memory_cleanse((void*)&nCounter, sizeof(nCounter));
}
 
 
 
看到这个就不用去想自己能重现私钥了,如果只是时间随机数种子还是有希望的,遍历每毫秒。
 
实际上生成随机私钥用到了3种随机数:
// First source: OpenSSL‘s RNG
RandAddSeedPerfmon();
GetRandBytes(buf, 32);
hasher.Write(buf, 32);

// Second source: OS RNG
GetOSRand(buf);
hasher.Write(buf, 32);

// Third source: HW RNG, if available.
if (GetHWRand(buf)) {
hasher.Write(buf, 32);
}
基本上来说是真随机了,而不是我们平时生成的伪随机数。至少这个随机数没有办法重现,够狠,这也是比特币赖以生存的原因。
欢迎来我的博客看看 http://www.cnblogs.com/douyamv
个人网站: http://www.douyamv.com/  

比特币私钥生成

标签:write   title   bytes   源码   href   orm   get   比特币   void   

原文地址:http://www.cnblogs.com/douyamv/p/7761844.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!