【SCRY知識課堂】比特幣的私鑰,公鑰和地址是什麼?

買賣虛擬貨幣
前段時間,我們建立了一個學習群,叫【SCRY區塊鏈知識學習群】,已經過去快三週了。從今天起,我們每週都會把講課的內容分享給大家。(文中的時間都是相對於講課當天的時間)在比特幣中,經常出現三個詞:私鑰,公鑰和地址。它們是什麼意思呢?他們之間又有什麼樣的關係呢?搞清楚他們之間的關係和區別,是瞭解比特幣的基礎。今天看群裡有同學說這裡大多數人都不懂技術,今天我將用比較易懂的方式來告訴大家。就在今天上午對吧?群裡一位叫“磊哥”的同學說他的手機掉了,換了新手機,但重新登陸imToken時,卻忘記助記詞了,只有私鑰……幸好私鑰還在啊,不然可就慘了。中本聰的身份一直以來都是個謎,自從2008年中本聰發表了比特幣白皮書後,就出現過很多個“中本聰”。其中最出名的,莫過於克雷格•賴特(Craig Wright),也就是我們調侃的澳本聰,當時他站出來公開表示他是中本聰,且能提供中本聰的私鑰。結果大家都知道了吧。上面提到的私鑰,就是像下面這樣的一段字串:
5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss支援比特幣協議的應用都可以把這段字串轉換成比特幣的私鑰,再轉換出公鑰,再得到一個比特幣地址。如果該地址上面有對應的比特幣,就可以使用這個私鑰花費上面的比特幣。你們看上面那段字串,就是沒有對應比特幣的。這是我新建的一個錢包中的地址,在複製出私鑰後,已經刪除,只要裡面沒有比特幣,對我是沒有任何影響的。而大家要注意的就是:別把你們的私鑰洩露出去,也不要儲存在雲盤或本地硬碟、透過聊天工具傳送等,這些都有可能造成損失。最好是寫在紙上,儲存在安全的地方。當然,裡面啥都沒有的話,就另說了。說了這麼多,那私鑰是怎麼生成的呢?emmmmm我說是隨機生成的,會不會有人打我啊?其實,私鑰本質上就是隨機數。私鑰由32個byte組成的陣列,1個byte等於8位二進位制,一個二進位制只有兩個值0或者1。這樣說,可能有些沒學過計算機的同學就不太懂了,那直接說結論吧。私鑰的總數是將近2的256次方個。這個數量已經超過了宇宙中原子的總數,想要遍歷所有的私鑰,耗盡整個太陽的能量也是不可能的。這一點,說的是私鑰在密碼學上的安全性。當然,並不是說不可能出現重複的私鑰,而是說不可能透過遍歷的方式找到某一個特定的私鑰,或者透過其它的方式找,而不透過私鑰就能花費地址上面的比特幣,私鑰的安全性是由數學上保證的。
私鑰字串是按照一定的規律從32位byte資料格式化生成的,32個byte的陣列是由256個0或者1組成的,如果顯示出來,不僅僅是識別率不高,而且私鑰太長。因此私鑰字串就是對於原始的隨機數進行一定的轉換,轉換為識別率高的形式,下面私鑰的是對32個byte陣列就做了Base58的轉換。5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjssBase58是用於比特幣中使用的一種獨特的編碼方式,主要用於產生Bitcoin的錢包地址和私鑰。相比Base64,Base58不使用數字"0",字母大寫"O",字母大寫"I",和字母小寫"l",以及"+"和"/"符號。這樣做的主要原因是為了肉眼容易識別,在輸入的時候不容易打錯。(百科)所以為了便於人眼識別,我們把原本很長又不好記的字元,用一種叫做Base58的編碼方式,轉換成了一段更易識別的字串。不過轉換後的這串字元,輸入起來還是挺費勁的。這時候,也可以把私鑰轉換其他形式,比如以單詞的形式。這就是大家在錢包中看到的助記詞。私鑰大致說完了, 都是比較簡單的概念。大家對理論有興趣可以去查資料。
下面來說公鑰。公鑰實際上是由私鑰轉來的,這個過程,使用了之前提到的一種演算法——橢圓曲線加密演算法。

至於演算法的過程,我們就不探討了,涉及到計算以及理論。

給大家看一張圖,其中講到了私鑰到公鑰的過程。

橢圓曲線加密法以橢圓曲線理論為基礎,利用橢圓曲線等式的性質來產生金鑰,而不是採用傳統的方法利用大質數的積來產生,其特點是:金鑰長度小,安全效能高,整個數字簽名耗時小。

這裡提到的數字簽名技術,簡稱DSA,全稱是Digital Signature Standard,在DSA數字簽名和認證中,傳送者使用自己的私鑰對檔案或訊息進行簽名,接受者收到訊息後使用傳送者的公鑰來驗證簽名的真實性。這裡有一個非常便於理解DSA的網站,我發給你們
"What is a Digital Signature?"
http://www.youdzone.com/signature.html

公鑰是任何人都可以獲得的,而私鑰只能你們自己保留好,公鑰經過一系列數字簽名運算就會得到大家常說的比特幣錢包地址。因為由公鑰可以算出比特幣地址,所以我們經常會把它們兩兄弟搞混。它們都是指的同一個概念,不過比特幣錢包地址是另一種格式的公鑰,但是兩兄弟的衣服穿的不一樣。區別在於外在表現形式。

我們看到的比特幣地址一般都是Base58編碼處理的,地址的生成比較複雜,看吧,Base58 又出來了。整個過程比較複雜,這裡就不細講了。

最後梳理一個脈絡:私鑰 —— 公鑰 —— 比特幣錢包地址

現在大家應該知道私鑰、公鑰和比特幣地址的關係了吧。中間插入了很多話題,大家下來可以再瞭解一下。關於今天的內容,同學們有問題可以提出來,我會盡量回答。好了,今天的課程就到這裡了,我們下期再見。

免責聲明:

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

推荐阅读

;