王程-沈陽佳禾3星評價
2020-10-30 13:58:12
私鑰本質(zhì)上是隨機數(shù),我們所說的比特幣私鑰的是密碼學(xué)上面安全的,并不是說不可能出現(xiàn)重復(fù)的私鑰,而是說不可能通過遍歷的方式找到某一個特定的私鑰,或者通過其它的方式找,而不通過私鑰就能花費地址上面的比特幣,私鑰的安全性是由數(shù)學(xué)上保證的。
私鑰的總數(shù)量很大,但是私鑰的生成是依賴隨機數(shù)的,真正的隨機是很難做到的,大部分私鑰的生成都是依賴于偽隨機算法(PRNG)。偽隨機是用函數(shù)生成隨機數(shù)。它并不真正是隨機的。只是一個比較近似真隨機的隨機數(shù)。橢圓曲線數(shù)字簽名算法(ECDSA)是使用橢圓曲線密碼(ECC)對數(shù)字簽名算法(DSA)的模擬
橢圓曲線加密法(ECC)是一種公私鑰加密技術(shù):
ECC以橢圓曲線理論為基礎(chǔ),利用橢圓曲線等式的性質(zhì)來產(chǎn)生密鑰,而不是采用傳統(tǒng)的方法利用大質(zhì)數(shù)的積來產(chǎn)生,其特點是:密鑰長度小,安全性能高,整個數(shù)字簽名耗時小。
DSA(DigitalSignature Standard)數(shù)字簽名技術(shù):
在DSA數(shù)字簽名和認證中,發(fā)送者使用自己的私鑰對文件或消息進行簽名,接受者收到消息后使用發(fā)送者的公鑰來驗證簽名的真實性。顯示出的公鑰一般把byte數(shù)組是經(jīng)過hex(16進制)的處理之后顯示,不經(jīng)過Base58的原因是: 公鑰是用來驗證私鑰的簽名,一般我們很少會看到公鑰,使用私鑰簽名交易之后,會把自己的公鑰一起和交易發(fā)送出去,這樣對于一個完整的交易開說,他就使用交易里包含的公鑰驗證私鑰的簽名是否正確。
私鑰和公鑰是成對出現(xiàn)的,一個私鑰簽名的數(shù)據(jù),只有對應(yīng)的公鑰才能對其進行驗證,而地址也是從公鑰生成的,這樣就可以驗證花費的交易是不是屬于這個地址了!
有很多方法可以生成私鑰。它們的簡單性和安全性不同。生成私鑰只是第一步。下一步是提取可用于接收付款的公鑰和錢包地址。
一根有信仰的韭菜10星評價
2020-08-14 16:40:59
如何生成私鑰(private key)
本質(zhì)上私鑰就是一串隨機選出的 256 個 bit 的 01 數(shù)字(32 字節(jié) * 8 = 256 bits),但是這串?dāng)?shù)字卻控制著你的比特幣賬號的所有權(quán),因此這串?dāng)?shù)字相當(dāng)重要,要具有足夠的隨機性,一般采用密碼學(xué)安全的偽隨機數(shù)生成器(CSPNG),并且需要有一個來自具有足夠熵值的源的種子(seed)。
比特幣客戶端軟件使用 Secp256k1ECDSA 標準生成橢圓曲線,使用橢圓生成一個私鑰,然后再從私鑰中生成對應(yīng)的公鑰。
如果自行選取簡單的123456密碼,最終生成的賬戶可是“公交車賬戶”了哈哈。
選擇 32 個字節(jié)的原因是因為 Bitcoin 使用的是 ECDSA 算法,并且使用的是 secp256k1 曲線。
如何生成公鑰(public key)
Bitcoin 的公鑰是通過 橢圓曲線密碼學(xué)算法(K = k * G)來生成,其中公式中的:
K:公鑰;
k:私鑰,為上一段生成的 32 字節(jié)的字節(jié)數(shù)組(16 進制串表示);
G:為一個生成點;
Bitcoin 使用了 secp256k1 標準定義的一種特殊的橢圓曲線和一系列的數(shù)學(xué)常量。
如上公式,以私鑰 k 為起點,與預(yù)定的生成點 G 相乘來生成公鑰 K,并且因為所有 Bitcoin 用戶的生成點 G 都是相同的(常量),所以由一個確定的私鑰 k 生成一個確定的公鑰 K,并且是單向的。