1、雜湊函式的三個重要的性質
a.collision resistance
什麼是collision?當x≠y但h(x)=h(y),這時就稱為乙個collision。
什麼是collision resistance?比方說有個x1,他的雜湊值是h(x1)。但我們很難找出乙個x2來,使他的h(x2)=h(x1)。一般情況下,我們只能用遍歷的方法算。所以,一旦x1被黑客篡改,我們能很快發現x1這個資料被篡改了。這就叫collision resistance.
我們需要知道,雜湊函式是否具有這個性質是很難被證明的。但有的雜湊函式沒有collision resistance的性質,這已經被證明出來,這時候這個雜湊函式就不能被使用了。比如著名的md5函式,我記得我本科做數學建模最後提交檔案就要用md5,很多****也要用到md5,但是後來它被證明不能保證colision resistance,用的就越來越少了。
b.hiding
hiding是指雜湊函式的計算過程是不可逆的,簡單說就是隱藏輸入。即使我們知道了函式和輸出,也推不出來輸入。
當然,如果在輸入空間相對有限的情況下,我們通過可以乙個乙個算,把輸入是啥算出來。所以我們一般要求輸入空間是無窮大的,且相對均勻。
c.puzzle friendly
這個性質和位元幣挖礦有關係。
意思是指,如果我們要算得某一值,要求他的雜湊值正好落在某一的值域,那麼我們是不可能通過捷徑算出來的。如果非要算,只能乙個乙個遍歷。
所謂區塊鏈就是把乙個乙個區塊給鏈起來,而每乙個區塊都有乙個head,head裡有乙個域,這個域我們可以設定隨機數nonce,所謂「位元幣挖礦」,就是我們要找定這麼乙個隨機數nonce,使h(nonce)正好落在這個區塊的值域裡。
所以我們要挖礦(找這個隨機數),工作量是無比巨大的,一般只能由超大型計算機去完成。
位元幣中用的雜湊函式,是sha-256。如果有人想證明它不是collision resistance的,完全可以去嘗試算。當然,一旦你證明出來了,位元幣就不值錢了。無數密碼學家至今也無法證明它不是collision resistance。
2.公鑰public key和私鑰private key
打個比方,公鑰相當於你的銀行賬戶,私鑰相當於你的銀行密碼。公鑰是以明文形式在網際網路傳播的,用於加密;私鑰是只有自己有的,用於解密。公鑰和私鑰是一對的。
比方說靜香要傳一封信給大雄,她可以用大雄的公鑰對這個資訊加密,大雄然後再用他自己的私鑰進行解密。大雄的私鑰只有他自己知道,小新都不知道。所以,加密的公鑰,是不怕別人知道的,任何人都可以用公鑰加密去給你寫信。
建立位元幣賬戶時,系統會自動給你一對公鑰和私鑰。在位元幣中,私鑰用於簽名,公鑰用於別人去驗證簽名,也即驗證出這個資訊確實是你發布的。
注意,一對公鑰和私鑰,是隨機生成的。基本不可能正好有兩個人的一對公私鑰相同,相同的概率比你當上中國首富的概率都小,完全可以放心。
區塊鏈基礎 1 密碼學基礎
雜湊函式 雜湊函式是乙個數學函式,具有以下三個特性 輸入為任意大小的字串 輸出大小固定,例如sha 256的輸出為固定256bit 對應n位輸入的字串,計算輸出的複雜度位o n 加密雜湊函式 cryptographic hash function 加密雜湊函式是達到密碼安全的雜湊函式,要求具有以下三...
區塊鏈技術 密碼學
1 對稱加密 用相同金鑰對原文進行加密和解密 加密過程 金鑰 原文 密文 解密過程 密文 金鑰 原文 缺點 無法確保金鑰被安全傳遞 2 非對稱加密 公鑰 私鑰,ras演算法 公鑰用於加密,私鑰用於解密。私鑰簽名,公鑰解簽名。公鑰由私鑰生產,私鑰可以推導出公鑰 從公鑰無法推導出私鑰 優點 解決了金鑰傳...
區塊鏈與密碼學
在學完大概了密碼學的知識,其實也只是看完了dan boneh的那本密碼學的書,現在開始密碼學與區塊鏈的結合學習,因為我自己是主要針對密碼學和區塊鏈的,但是去學習密碼學在區塊鏈上面的一些應用,就可以使得對密碼學有更深刻的了解,因為密碼學擁有很龐大的體系,所以我只能這樣去慢慢摸索。因為我有很多學習的內容...