比特幣源碼研讀(5)—— 私鑰漂辐、公鑰和地址

比特幣中的私鑰泪喊、公鑰和地址,類比我們現實生活中銀行卡髓涯,私鑰是密碼袒啼,地址是卡號,公鑰還沒有恰當的類比纬纪。在轉賬過程中蚓再,我們有密碼,知道對方的地址包各,就可以轉賬成功对途。誰擁有私鑰,誰就可以花費這個錢髓棋;誰擁有發(fā)送地址對應的私鑰,誰就能接收這筆錢。
在比特幣種按声,私鑰膳犹、公鑰和地址三者的關系是這樣的:

  1. 私鑰:隨機生成256位比特的二進制數字
  2. 公鑰:由私鑰通過橢圓曲線乘法生成
  3. 地址:公鑰通過單向的加密哈希算法得到

如下圖


image

私鑰

比特幣的私鑰就是1~2^256 中的一個數字,這個數字非常非常大签则,保證了比特幣的私鑰不會被破解须床。那到底2^256 這個數字有多大呢?用十進制表示的話渐裂,大約是10^77 豺旬,而可見宇宙被估計只含有10^80 個原子。超級計算機“神威·太湖之光”的峰值性能為12.5億億次/秒柒凉,相當于10^17 ,如果用這臺目前世界第一的超級計算來碰撞比特幣私鑰族阅,需要10^60 秒,也就是3*10^52年膝捞。我們可以得出這樣的結論坦刀,通過碰撞破解比特幣的私鑰是不可能的。
比特幣代碼中生成私鑰的方法是MakeNewKey,這個方法在文件key.cpp蔬咬。循環(huán)通過GetStrongRandBytes通過偽隨機數生成器生成私鑰鲤遥,然后檢查是否符合要求,如果符合則跳出循環(huán)林艘。

// 在key.cpp
void CKey::MakeNewKey(bool fCompressedIn) {
    do {
        GetStrongRandBytes(keydata.data(), keydata.size());
    } while (!Check(keydata.data()));
    fValid = true;
    fCompressed = fCompressedIn;
}
 
//在random.cpp
void GetStrongRandBytes(unsigned char* out, int num)
{
    assert(num <= 32);
    CSHA512 hasher;
    unsigned char buf[64];
 
    // 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);
    }
 
    // Combine with and update state
    {
        std::unique_lock<std::mutex> lock(cs_rng_state);
        hasher.Write(rng_state, sizeof(rng_state));
        hasher.Write((const unsigned char*)&rng_counter, sizeof(rng_counter));
        ++rng_counter;
        hasher.Finalize(buf);
        memcpy(rng_state, buf + 32, 32);
    }
 
    // Produce output
    memcpy(out, buf, num);
    memory_cleanse(buf, 64);
}

公鑰

公鑰是私鑰通過橢圓曲線乘法生成的盖奈,只能通過私鑰生成公鑰,不能通過公鑰逆推出私鑰狐援,這是不可逆轉的過程钢坦。這個太過于復雜,等以后均益搞明白了咕村,再詳細說說场钉。

地址

地址是通過公鑰單向的加密哈希算法,這也是不可逆的懈涛。

以公鑰 K 為輸入逛万,計算其SHA256哈希值,并以此結果計算RIPEMD160 哈希值批钠,得到一個長度為160位(20字節(jié))的數字:

A = RIPEMD160(SHA256(K))

在產生的長32個字節(jié)的哈希值(兩次哈希運算)中宇植,我們只取前4個字節(jié)。這4個字節(jié)就作為檢驗錯誤的代碼或者校驗和埋心。校驗碼會添加到數據之后指郁。
結果由三部分組成:前綴、數據和校驗和拷呆,最后Base58編碼闲坎。

作者:區(qū)塊鏈研習社比特幣源碼研讀班疫粥,均益
原文地址:http://junyiseo.com/bitcoin/546.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市腰懂,隨后出現的幾起案子梗逮,更是在濱河造成了極大的恐慌,老刑警劉巖绣溜,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慷彤,死亡現場離奇詭異,居然都是意外死亡怖喻,警方通過查閱死者的電腦和手機底哗,發(fā)現死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锚沸,“玉大人跋选,你說我怎么就攤上這事≈渫拢” “怎么了野建?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長恬叹。 經常有香客問我候生,道長,這世上最難降的妖魔是什么绽昼? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任唯鸭,我火速辦了婚禮,結果婚禮上硅确,老公的妹妹穿的比我還像新娘目溉。我一直安慰自己,他們只是感情好菱农,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布缭付。 她就那樣靜靜地躺著,像睡著了一般循未。 火紅的嫁衣襯著肌膚如雪陷猫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天的妖,我揣著相機與錄音绣檬,去河邊找鬼。 笑死嫂粟,一個胖子當著我的面吹牛娇未,可吹牛的內容都是我干的。 我是一名探鬼主播星虹,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼零抬,長吁一口氣:“原來是場噩夢啊……” “哼镊讼!你這毒婦竟也來了?” 一聲冷哼從身側響起平夜,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤狠毯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后褥芒,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡嫡良,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年锰扶,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寝受。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡坷牛,死狀恐怖,靈堂內的尸體忽然破棺而出很澄,到底是詐尸還是另有隱情京闰,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布甩苛,位于F島的核電站蹂楣,受9級特大地震影響,放射性物質發(fā)生泄漏讯蒲。R本人自食惡果不足惜痊土,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望墨林。 院中可真熱鬧赁酝,春花似錦、人聲如沸旭等。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搔耕。三九已至隙袁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間度迂,已是汗流浹背藤乙。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留惭墓,地道東北人坛梁。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像腊凶,于是被迫代替她去往敵國和親划咐。 傳聞我的和親對象是個殘疾皇子拴念,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內容

  • 在比特幣中队魏,經常出現三個詞:私鑰公般,公鑰和地址。他們是什么意思呢胡桨?他們之間又有什么樣的關系呢官帘?搞清楚他們之間的關系和...
    姜家志閱讀 44,947評論 3 48
  • 一、快速術語檢索 比特幣地址:(例如:1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV)由一串...
    不如假如閱讀 15,945評論 4 87
  • #師北宸21天寫作訓練營Vol.1# 2018-04-14 鄧總昧谊,您好刽虹,今天我想和您聊聊加薪的事。 2013年8月...
    禧禧橙閱讀 397評論 4 3
  • 空曠呢诬。遼遠涌哲。四顧茫然。
    云居雁閱讀 101評論 0 0
  • 吱吱閃著油汪汪的酥軟外焦里嫩的咀嚼著咀嚼著咀嚼著我就化在這小宇宙的漩渦里向外是蛋白蛋清綠豆面的薄紗包裹在百年老字號...
    小者閱讀 200評論 0 0