您的位置:首頁 > 軟件教程 > 教程 > 比特幣密鑰是什么?比特幣密鑰生成原理是什么?

比特幣密鑰是什么?比特幣密鑰生成原理是什么?

來源:好特整理 | 時(shí)間:2022-10-10 14:52:06 | 閱讀:99 |  標(biāo)簽: 比特幣現(xiàn)金 比特幣是什么 區(qū)塊鏈?zhǔn)鞘裁?   | 分享到:

隨著比特幣的盛行,小編相信很多聽說過比特幣的人都知道比特幣是一種虛擬數(shù)字貨幣,而比特幣的特點(diǎn)是去中心化和匿名性,由此也就體現(xiàn)出比特幣密鑰的重要性,那么,有很多幣圈小白就要問了,比特幣密鑰是什么?比特幣密鑰生成的原理又是什么樣的?下面小編就給大家來解析一下。

比特幣密鑰是什么?比特幣密鑰生成原理是什么?

比特幣密鑰是什么?

比特幣包含一系列密鑰對(duì),每個(gè)密鑰對(duì)包含一個(gè)公鑰和私鑰。私鑰是一個(gè)隨機(jī)數(shù),私鑰通過橢圓曲線算法生成公鑰,公鑰再通過單向加密哈希函數(shù)生成比特幣地址。比特幣使用非對(duì)稱加密,使得簽名只能由私鑰產(chǎn)生,且在不泄露私鑰情況下所有人都可以驗(yàn)證該簽名p。私鑰和公鑰有可以被編碼成多種類型格式,無一例外的作用就是為了方便識(shí)別及錢包操作方便。

什么是比特幣私鑰?

私鑰可以理解為一個(gè)隨機(jī)數(shù),比特幣地址中資金的控制取決于相應(yīng)私鑰的控制權(quán),比特幣交易中,私鑰用于生成支付比特幣所必需的簽名以證明對(duì)資金的所有權(quán)。

選擇隨機(jī)性來源(熵源),生成一個(gè)比特幣私鑰在本質(zhì)上與“在1到22562256之間選一個(gè)數(shù)字”無異。建議使用密碼學(xué)安全的偽隨機(jī)數(shù)生成器(CSPRNG),并且需要有一個(gè)來自具有足夠熵值的源的種子。

什么是比特幣公鑰?

通過橢圓曲線算法可以由私鑰生成公鑰,該過程是不可逆的過程:K(公鑰)=k(私鑰)*G(常數(shù)點(diǎn))。其反向運(yùn)算,被稱為“尋找離散對(duì)數(shù)”--已知公鑰K來求出私鑰k--是極其困難的。

比特幣密鑰生成原理是什么?

橢圓曲線加密法是一種基于離散對(duì)數(shù)問題的非對(duì)稱(或公鑰)加密法,可以用對(duì)橢圓曲線上的點(diǎn)進(jìn)行加法或乘法運(yùn)算來表達(dá)。

一、通過操作系統(tǒng)隨機(jī)數(shù)生成器生成一個(gè)隨機(jī)數(shù),并進(jìn)行SHA256哈希運(yùn)算(結(jié)果必須是1到n-1之間的任何數(shù)字,n=1.158 * 1077),該數(shù)字即為私鑰最原始的內(nèi)容,所以需要通過密碼學(xué)安全的隨機(jī)源中選出一串隨機(jī)字節(jié),以防暴力破解使用SHA256哈希運(yùn)算是為了方便產(chǎn)生一個(gè)固定長度為256位的數(shù)字,使用十六進(jìn)制表示如下:6954ac6d0402d7239f1cc150da224d0ef08fd1226f245f06fe4d6d68accfce8a

二、如果使用壓縮公鑰,在私鑰的結(jié)果后面增加0x01;若使用非壓縮公鑰,則不追加0x01.私鑰的后綴01用于告訴錢包私鑰對(duì)應(yīng)的公鑰和地址是壓縮格式還是非壓縮格式的。原因是同一私鑰的壓縮公鑰與非壓縮公鑰是不同的,生成的地址也完全不同,也就是說會(huì)出現(xiàn)兩個(gè)公鑰和兩個(gè)地址對(duì)應(yīng)一個(gè)私鑰的情況,如果沒有標(biāo)識(shí),錢包無法將私鑰與公鑰和地址一一對(duì)應(yīng)。本次使用壓縮格式舉例

6954ac6d0402d7239f1cc150da224d0ef08fd1226f245f06fe4d6d68accfce8a01

三、對(duì)私鑰進(jìn)行base58check編碼,即轉(zhuǎn)換為WIF(Wallet Import Format)格式

在私鑰前添加版本前綴,0x80為WIF前綴

806954ac6d0402d7239f1cc150da224d0ef08fd1226f245f06fe4d6d68accfce8a01

將上面結(jié)果進(jìn)行double-SHA256運(yùn)算后取前四字節(jié)作為校驗(yàn)碼拼接在最后,然后進(jìn)行base58編碼得到私鑰的最終形態(tài)(非WIF壓縮格式的結(jié)果前綴為5.WIF壓縮格式的結(jié)果前綴為K或L)KzkTe43L5cbSX64txJMcsFvJC6vov7nYaGdYicz5N8Mds4ThN2XM

四、使用secp256k1橢圓曲線算法將私鑰轉(zhuǎn)換為公鑰(Gx,Gy),橢圓曲線算法是一種基于離散對(duì)數(shù)問題的非對(duì)稱加密法,其數(shù)學(xué)運(yùn)算是單向的,所以私鑰可以轉(zhuǎn)換成公鑰,但公鑰不能轉(zhuǎn)換回私鑰,將上面的結(jié)果轉(zhuǎn)換后得到如下結(jié)果(十六進(jìn)制):(0ba1ba3b8d8f7bd4a70828ec0e749dd26ee4cdd18d058c880afa121fad60e5b6.f2ee1b72d9b9a57706e5de72acc1378f92269086c4964c073593bf92d28c647d)

將公鑰合并成為十六進(jìn)制數(shù)

壓縮公鑰可以大大節(jié)省公鑰所占空間(減少256bits),是比特幣客戶端當(dāng)前的默認(rèn)格式,并且也兼容非壓縮公鑰,未壓縮(前綴04.將Gx,Gy拼接)

040ba1ba3b8d8f7bd4a70828ec0e749dd26ee4cdd18d058c880afa121fad60e5b6f2ee1b72d9b9a57706e5de72acc1378f92269086c4964c073593bf92d28c647d

壓縮(y為偶數(shù)前綴02.y為奇數(shù)前綴03.僅保留Gx,Gy可通過Gx計(jì)算)

030ba1ba3b8d8f7bd4a70828ec0e749dd26ee4cdd18d058c880afa121fad60e5b6

六、將公鑰轉(zhuǎn)換為比特幣地址

1.RIPEMD160(SHA256(公鑰))得出20字節(jié)/160 bits公鑰哈希,使用兩種Hash函數(shù)轉(zhuǎn)換最大的好處是如果其中一種函數(shù)被破解,仍然能保證安全性。

2.對(duì)公鑰哈希進(jìn)行Base58check編碼(版本前綴 + 公鑰哈希 + SHA256(SHA256(版本前綴+公鑰哈希))前4字節(jié)進(jìn)行Base58編碼),此處為P2PKH地址,前綴為0x00.得到最終的比特幣地址如下:17FjrmErg5a39P7UsyYCchpyzSnq9gmMuJ

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認(rèn)同期限觀點(diǎn)或證實(shí)其描述。

相關(guān)視頻攻略

更多

掃二維碼進(jìn)入好特網(wǎng)手機(jī)版本!

掃二維碼進(jìn)入好特網(wǎng)微信公眾號(hào)!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]

湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2025 haote.com 好特網(wǎng)