區塊鏈知識之私鑰、公鑰、地址(二)

買賣虛擬貨幣

在私鑰、公鑰、地址(一)一文中,已經對私鑰的生成和換算做了簡單的說明,公鑰和地址也都是因私鑰而生的。

在平時大眾新聞資訊介紹中,我們也常常聽到相關的說明,但是往往都是一句話帶過:經過一系列雜湊運算得到結果等等這樣的描述。

確實,在公鑰地址的運算過程中,的確用到了很多次的雜湊運算,但是具體的步驟流程是怎麼樣的,大概很少有人去了解一下。這一文,吳哥就跟大家一起邊學邊分享,相信,透過這一系列的學習,這一系列的演算法一定會深深的吸引酷愛BTC/" target="_blank"">比特幣和區塊鏈的你。

為了明確三者之間的關係,我們先來梳理一下從私鑰到公鑰到錢包地址的生成路徑,如下圖。

我們根據以往的知識進行一下流程的梳理:

一、私鑰的產生

前面我們已經學習過私鑰的產生,其本質就是一串隨機數,並且運用Base58演算法進行了轉化,通常,這個私鑰產生的都是由軟體來完成,我們所要做的就是安全的儲存好自己的私鑰。

不過,現在的私鑰也有很多其他的樣式,就像我們在imtoken錢包或其他型別的錢包中常常見到的助記詞也是私鑰的一種表現方式。助記詞的重要性等同於私鑰,也是要個人安全儲存。

二、公鑰的產生

有了私鑰,就可以利用橢圓曲線加密演算法(ECDSA-secp256k1)計算私鑰所對應的非壓縮公鑰。

曲線加密演算法是一種不可逆的加密演算法,這也就意味著從私鑰到公鑰是單向推導關係,只能由私鑰推匯出公鑰,而無法從公鑰推匯出私鑰,這個單向性也是非對稱加密的精髓所在。基於這一點,我們的公鑰可以告訴任何人而不必擔心私鑰被破解。

其中的橢圓曲線加密演算法是一種極其複雜的數學演算法,不少人第一眼看到曲線這一詞自然而然的想到橢圓曲線公式,不過實際上,橢圓曲線加密演算法跟橢圓基本沒有關係,後面我們會單獨就橢圓曲線加密及其不可逆性進行學習。我們先看一看它的樣子吧,如下圖。

是不是很意外,別急,後面吳哥跟大家一起來慢慢探討橢圓曲線加密演算法。

其實,現在我就有兩個問題想弄明白:

1、橢圓曲線加密演算法具體是什麼過程

2、既然是有演算法,為什麼是不可逆的,又是怎樣做到不可逆的。

相信帶著這些問題去學習,你一定會理解的更加深刻。

三、由公鑰計算公鑰雜湊

經常看吳哥文章的人,對這一步一定非常理解,也更容易消化。由公鑰計算公鑰雜湊就是進行了兩次雜湊運算,這兩次雜湊運算分別是SHA256和RipeMD160。

在雜湊運算一文中,吳哥也進行過詳細的說明,在文中我也提到過進行雜湊運算的一個網站,網站裡面就提到了各種不同的雜湊運算。

網址:http://www.fileformat.info/tool/hash.htm

SHA256和RipeMD160都位列其中,認真讀吳哥文章的朋友一定有印象。

如果把雜湊運算比作中餐的話,那SHA256和RipeMD160和其他的演算法就相當於魯菜、蘇菜、粵菜、川菜等等各種菜系。

雜湊運算的特性決定了,從公鑰到公鑰雜湊也是單向不可逆的。

公鑰雜湊計算後放在一邊,後面都會用到。然後準備好地址版本號(比特幣主網版本號“0x00”)如圖所示

四、公鑰雜湊進行兩次雜湊運算

這一步的運算不是為了減少長度或增加推導難度,而是為了取其雜湊值的前4個位元組當做效驗。雜湊運算在這裡就不在重複說明了。

五、經過Base58得到錢包地址

地址版本號(圖中的0x00)+公鑰雜湊+公鑰雜湊的效驗三個組合進行Base58換算,最終得出了錢包地址。

Base58演算法在上一文中也介紹了,這裡不在重複,其本質就是58進位制。

就這樣,從私鑰到公鑰到地址的整個過程梳理完畢,可以看到,其中用到了多次多種的雜湊演算法,並且用到了Base58演算法。我們知道,雜湊演算法是單向不可逆的,Base58是可逆的,所以,私鑰、公鑰、公鑰雜湊、和錢包地址直接的方向關係可以用下圖進行簡單說明。

關於私鑰、公鑰和錢包地址今天就先學習到這裡,後面會對其中的一些細節進行學習和分享。

希望有技術大神能指教留言,畢竟,關於區塊鏈知識我也是一名小白,文中所述也是一個外行人根據自己的理解所寫,其中不乏不妥之處,還望技術大神賜教。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;