區塊鏈技術包含多種加密技術,相信大家都有聽過SHA256、橢圓曲線加密、雜湊加密、非對稱加密這些詞彙。具體說來,區塊鏈的加密演算法總共可以分為兩類,分別是雜湊演算法與非對稱加密。至於我們平時說的橢圓曲線演算法是一種非對稱加密演算法,SHA256則是的一種雜湊演算法。
雜湊計算與非對稱加密
非對稱加密是相對於對稱加密而言,對稱加密是指加密和解密用的都是同一種金鑰,如用金鑰對某段資訊進行加密,密文接受者要讀取密文內容要用同一個金鑰解密即可。非對稱加密則存在兩種金鑰,分別是公鑰與私鑰,公鑰通常公開,私鑰不公開。公鑰加密需用私鑰解密,私鑰加密需用公鑰解密。關於非對稱加密的原理與應用,肖恩曾在《非對稱加密:如何防止隱私被竊取?》一文中有細講,在此就不贅述了。
常用的非對稱加密演算法有:RSA,ECC(橢圓曲線演算法)。
雜湊演算法,又稱為雜湊演算法,是一種只能加密不能解密的數學函式演算法。它是將任意長度的字串進行雜湊運算,對映為較短的、固定長度的字串,並且這個雜湊計算的過程是不可逆的。
雜湊演算法主要具有三個特性:
1.輸入可以是任意大小的字串,輸出(雜湊值)為固定大小的字串。2.輸入發生改變(即使只是一個位元組被改變),輸出(雜湊值)即可發生改變。3.輸出(雜湊值)不可以倒推出輸入。(透過暴力破解是可以有輸出逆推出輸入,但是這個暴力破解所需的時間、算力等成本過高,接近於不可實現,因此視為不可逆推。)
常用的雜湊演算法有:MD2、MD4、MD5、HAVAL、SHA。
加密演算法在區塊鏈中的應用
非對稱加密演算法是透過加密解密所用金鑰不一樣,來保障交易資訊的安全。如比特幣轉賬交易中,轉賬發起人需用私鑰來簽名,這個簽名被全網的節點用轉賬發起人的公鑰進行驗證,從而證明轉賬發起人對欲轉出的資金的所有權。非對稱加密演算法主要就是用於對資訊的真實性驗證,確保網路的安全性。
雜湊演算法在區塊鏈中的應用則主要體現為以下幾個方面:
區塊雜湊值的計算。比特幣區塊鏈是由一個個的區塊按照時間順序串聯在一起,每一個區塊都有著一個獨一無二的雜湊值作為表示區塊標識。這個雜湊值就是區塊中的交易資料經過雜湊演算法的計算獲得的。此前肖恩講過默克爾樹,就與這有關。
節點地址的計算。節點地址的計算是從公鑰開始,主要流程是這樣的:
1.區塊鏈節點的公鑰進行sha256計算,在進行RIPEMD160計算,得到公鑰雜湊,給公鑰雜湊新增版本資訊。2.對加上版本資訊的公鑰雜湊進行double SHA256計算得到另一個雜湊值,取這個雜湊值的前4個比特幣位元組。3.將第二步的取得的4個位元組,放到第一步的加上版本資訊的公鑰雜湊後,獲得新的字串。4.將第三步的字串進行base58編碼,即可獲得地址。
挖礦。比特幣挖礦採用的工作量證明(POW)共識機制,就是用雜湊演算法計算一個隨機數nounce,當這個隨機數和其他雜湊過的資料合併後得到值A。挖礦就是不斷計算noune,直到使A小於目標值(TARGET)。
SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET。
在區塊鏈中,雜湊演算法和非對稱加密演算法二者相互協作,保障了區塊鏈網路的安全。如在比特幣區塊鏈中,私鑰是透過雜湊計算而得來的,然後私鑰透過橢圓曲線演算法得到公鑰,公鑰再經過一系列雜湊計算,得到地址。
本文由肖恩說鏈原創發表,歡迎大家推薦給幣圈、鏈圈的朋友。未經授權不得用於商用,否則將依法追究法律責任。