1. 程式人生 > >比特幣私鑰生成

比特幣私鑰生成

hle cpu .html byte first 然而 lin ref bsp

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

比特幣私鑰生成