首页 > 其他 > 详细

比特币私钥生成

时间:2017-10-31 15:50:26      阅读:343      评论:0      收藏:0      [点我收藏+]

比特币突破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/  

比特币私钥生成

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!