獲得私鑰,私鑰為錢包密碼,不對外可見,事關財產安全
利用私鑰去生成公鑰,利用橢圓曲線乘法,定義乙個私鑰為k, g為橢圓曲線上的一點,公鑰為 k= g * k。 橢圓曲線乘法由橢圓曲線加法累加而來,橢圓曲線加法可簡述為:乙個點與其自身相加等同於在這個點上畫一條切線,找到切斜與曲線相交的點,相交點相對x軸對稱的點就是我們要找的點。生成點是作為secp256k1標準的一部分定義的,對於位元幣而言,其所有金鑰均使用相同g點。
生成公鑰雜湊:為了加密公鑰,公鑰需先經歷sha256進行一次雜湊運算,然後從其結果中計算ripemd160的雜湊值,這樣我們就建立了乙個160位元(20位元組)長度的數字:a=ripemd160(sha256(k))
將上一步得到的data再次進行兩次雜湊加密,這是為了獲得乙個更加安全的驗證碼。具體做法如下:hash = sha256(sha256(data)), 然後只提取hash的前4位元組作為校驗碼,並將其新增到data最後,現在我們有了新的 data* = data(字首 + 公鑰雜湊) + 校驗碼
base58check編碼:這一步的目的是為了大幅度縮減資料長度,舉個例子,是用十六進製制就可大幅縮短十進位制下的數字的長度,58代表類似於58進製表示方法,在此不作詳細說明。這一步對上一步data*進行base58編碼即可。至此,我們獲得了乙個位元幣位址,即乙個收款賬號,用來接收支付。
這篇筆記只是為了描述位址生成大致過程,很多知識沒有展開,具體偽**及流程圖,請參考《mastering bitcoin》(andreas m. antonopoulos)-- 位元幣位址 一章
位元幣位址
位元幣位址就是用來接收別人付款的。你也許知道,錢包軟體是使用私鑰來付款。乙個位元幣位址由兩個部分組成,一部分是公鑰雜湊值經過bases58check編碼的組合,另一部分是關於這個網路位址的資訊。bases58check編碼有一些很精巧的特性,比如用於避免拼寫錯誤的驗證碼,避免模糊的字元,比如 0 o...
位元幣位址 錢包
私鑰必須保密。私鑰的機密性需求事實情況是,在實踐中相當難以實現,因為該需求與同樣重要的安全物件可用性相互矛盾。當你需要為了避免私鑰丟失而儲存備份時,會發現維護私鑰私密性是一件相當困難的事情。通過密碼加密內有私鑰的錢包可能要安全一點,但那個錢包也需要備份。有時,例如使用者因為要公升級或重灌錢包軟體,而...
C 如何生成位元幣位址並實現轉賬
nbitcoin是.net平台上最完整的位元幣開發包,也是每乙個c 開發人員必備的位元幣開發包。nbitcoin幾乎實現了所有相關的位元幣改進提議,並且提供了對位元幣協議底層元語的訪問支援,因此你可以用nbitcoin快速地構建c 位元幣應用,例如為c 應用新增位元幣支援,或者將平台與位元幣錢包節點...