關於橢圓曲線部分的知識,我就不寫了,不是因為簡單,恰恰相反,因為太難了,我自己也沒搞懂。
這裡我只寫一點寫**的時候需要掌握的一點點知識。
首先是公鑰,我們可以把公鑰看成是乙個二維座標上的點,作為乙個二維座標上的點,它當然有x軸和y軸兩個數來共同決定。另外,這兩個數還特別大,每個數要用256bit來儲存,也就是32位元組。
其實是私鑰,它不是乙個點,它只是乙個數,但它也很大,也要用256bit來儲存。
上面說了公鑰和私鑰的基本樣子,下面來說說他們在位元幣應用上存在的格式。
私鑰,有壓縮私鑰和非壓縮私鑰的區別。
這裡提到的壓縮和非壓縮不是它的基本樣子,而是私鑰經過處理後的樣子。什麼樣的處理叫壓縮私鑰,什麼樣的處理又叫非壓縮私鑰?
非壓縮私鑰:網路字首+私鑰本體
壓縮私鑰: 網路字首+私鑰本體+0x01
import (
//2. 取兩次sha256雜湊的前4個位元組,作為校驗值新增在後面
hash256 := sha256aftersha256(privkey)
//3.用base58轉換一下
return base58.encode(privkey)
}
功能寫好了,為其編寫測試**是乙個好習慣
func testnewprivkeyinwif(t *testing.t) ,
} for _,onecase := range testcases
if uncompressedwif != onecase.uncompressedprivkey
}}
如果想要自行增加測試用例,可以訪問下面這個有趣的**:
生成wif格式的私鑰,可以直接匯入位元幣錢包試試效果,比如electrum錢包。
關於公鑰的壓縮和非壓縮就到下次再寫了。
(本文完)
公鑰 私鑰 位元幣私鑰 公鑰 錢包位址之間的關係
錢包位址生成 2 私鑰 經過secp256k1演算法處理形成了 公鑰 secp256k1是一種橢圓曲線演算法,通過乙個已知的 私鑰 可以算出 公鑰 而 公鑰 無法反向計算出 私鑰 這是保障位元幣安全的基礎演算法。3 同sha256一樣,ripemd160也是一種hash演算法,可以由 公鑰 計算得到...
位元幣原始碼解讀之私鑰 公鑰和位址
通過公鑰生成公鑰hash 通過公鑰hash生成位址 位元幣是建立在數字加密基礎上的,接觸過位元幣的朋友應該知道 1 購買位元幣最後是通過乙個位元幣位址進行的,位元幣位址就像支票中的支付物件 收款方 2 而位元幣位址則是通過公鑰單向雜湊生成的 3 而公鑰則是通過私鑰使用橢圓曲線演算法生成的,4 而私鑰...
位元幣私鑰 公鑰 錢包位址之間的關係
位元幣交易涉及到很多密碼學知識 公鑰 私鑰 雜湊 對稱加密 非對稱加密 簽名等等。那麼哪些是需要使用者認真保管不能對外洩露的,那些是需要使用者公開的呢?先從錢包位址的生成說起。1.首先使用隨機數發生器生成乙個 私鑰 一般來說這是乙個256bits的數,擁有了這串數字就可以對相應 錢包位址 中的位元幣...