哈希函數--區塊鏈的back bone

2021-02-15 區塊鏈鉛筆Blockchain

作者:Bitcoin Magazine

了解比特幣和區塊鏈非常簡單,只要理解三部分, 第一是了解其數據結構,第二個就是分布式儲存和共識,第三就是網絡和節點。

哈希函數不管是在數據結構還是在分布式共識方面都是非常重要的,

那麼什麼是哈希函數呢?

一般來說哈希函數是一類可以把任何數據轉換成固定長度輸出(也就是我們說的哈希值)的數學函數,而且可以被高效的計算, 所以我們一般會用來構建哈希表等。

在此基礎上密碼學哈希還多了3個特性。

是無衝突

可以隱藏原數據

可以用來創建搜索謎題

無衝突

無衝突的意思呢,是指這個哈希函數永遠不會把兩個不同的數轉換成同樣的哈希值。

我們以sha-256為例(sha-256也是比特幣裡用到的哈希函數,屬於sha-2系列),它可以將數據,不管這個數據(輸入)多大或者多小都可以轉換成256比特,也就是32位元組的一個哈希值。

就算這個數據(輸入)只更改來一個標點符號,生成的哈希值也是完全不一樣的。

但是理論上來講,哈希值重複的情況是存在的,我們稱這種情況為衝突,因為你想啊, 這個輸入是無限的,你可以輸入任何數據,大的小的都行。 而這個輸出,哈希值它是有限的。(32位字母和數字的組合,組合的次數是有限的)但是這個數字是很大的,如果你要找到sha-256哈希值重複的這種情況,就是試2的130次方的輸入,這個數字是一個天文數字,我的電腦都打不出來。 所以呢沒有人能找到衝突也就是哈希值重複的情況。

在確定來哈希值的獨一性後,我們就可以用哈希值來作為識別文件。在文件很大的情況下就異常的有用了。當然這個只是初級玩家的用法。

高階玩家玩更溜了。

相信玩編程的朋友都知道一種數據結構叫linked list。

單向linked list

就是用指針把不同的數據塊按順序連結起來,那麼現在我們確定了哈希值的獨一性後,是不是可以把這個哈希值拿來當指針用呢?

具體怎麼實現呢?

首先計算出第一個數據塊的哈希值,然後把這個值放在第二個數據塊裡,再計算第二個數據塊(包含了第一個數據塊的哈希值)值,以此類推,你就得到了一種新的數據結構,俗稱區塊鏈。

當然,這只是區塊鏈數據結構,而不是我們現在說的區塊鏈技術(後者還包含了分布式儲存和分布式共識,還有點對點網絡)然後這個數據結構比起linkedlist多了一個特性,那就是防篡改。任何人想要修改這個鏈裡數據塊的消息,都會很容易被發現,因為哈希值會對不上。

可以隱藏原數據

密碼哈希函數的第二個特性就是可以隱藏原數據,因為哈希函數是單向函數,你可以把數據轉換成哈希值,但是不能把哈希值轉換成原數據。因此,哈希函數有可以隱藏原數據的特性。

這個就非常有用了,最知名的應用就是拿來儲存密碼。

比如說你在某網站的密碼,如果這個網站直接把你的密碼存在了他們的伺服器上,那是非常不安全的,但是如果是儲存了你的密碼對應的哈希值,你每次輸入密碼的時候後臺自動轉化成哈希值,只要哈希值對上就可以登陸了。這樣安全性就提高了很多。

但是為什麼還有那麼多盜號,盜密碼的情況發生呢?那可能是因為你的密碼很常見,所以黑客只要需要輸入所有常見的密碼,然後用哈希值一對比,就知道了。

所以要想安全的隱藏「原數據的」的話,對輸入的隨機性和廣泛性有要求的。 也就是為什麼很多網站硬性要求密碼要有符號,有大寫字母,小寫字母,數字等。

可以用來創建搜索謎題

第三個特性就是創建搜索謎題,就是我用哈希函數創建一系列的數學難題,然後再給出一定範圍(難度隨著範圍大小變大變小)的可能答案,然後讓你一個個的去試,(注意的是,這個是沒有任何捷徑的,就像我們之前將的那樣,改一個標點符號哈希值就會完全不一樣,而且這個哈希值的生成也是沒有任何邏輯和規律可循,所以只能一個一個的試)如果運氣好,找到了正確的答案,把答案和你解決的這個難題的信息一起哈希就會得到特殊的哈希值。(如以很多0開頭啊,或者以很多x結束啊類似的) 。

這個運用在比特幣挖礦裡, 如果你找到了答案(nonce),然後和區塊頭裡的信息一起哈希,就會得到一個以很多0開頭的特殊的哈希值。

本文僅代表作者個人觀點,不代表區塊鏈鉛筆的立場,不構成投資建議,內容僅供參考。

3分鐘了解什麼是區塊鏈?(中文動畫)|(英文動畫教程)

3分鐘了解什麼是DAO?(中文動畫)|(英文動畫教程)

3分鐘看懂以太坊和智能合約?(中文動畫)|(英語動畫教程)

3分鐘了解比特幣挖礦和區塊鏈共識機制?(中文動畫)|(英文動畫教程)

3分鐘了解公有鏈和私有鏈(中文動畫教程)|(英文動畫教程)

3分鐘了解區塊鏈的六層模型(中文動畫教程)|(英文動畫教程)

什麼是區塊鏈英文版(動畫教程)

肖風:區塊鏈與另類資產配置

逐鹿區塊鏈!詳解三大巨頭BAT區塊鏈戰略布局

麥肯錫報告:區塊鏈對保險行業的影響

八張圖表解讀區塊鏈的未來發展

震驚全球的The DAO黑客事件全程回顧

Circle獲得包括IDG、百度、萬向在內6000萬美元融資


關注本公眾號後,進入公眾號

回復關鍵詞可以查閱資料,以下是部分關鍵詞

回復 WEF ,查看《WEF:世界經濟論壇認為區塊鏈是網際網路金融行業的未來報告》

回復 智能合約 ,查看《巴克萊銀行報告》

回復 moody ,查看《穆迪120個區塊鏈項目報告》

回復 SWIFT ,查看SWIFT《區塊鏈對證券交易全流程產生的影響及潛力》報告

回復 論文11 ,查看論文《可擴展的去中心區塊鏈》

回復 埃森哲2 ,查看埃森哲《區塊鏈每年可以為投資銀行節省120億美元》報告

回復 聯合國報告 ,查看聯合國報告《數字貨幣和區塊鏈技術在構建社會和可信金融之間扮演的角色》

回復 用戶特性 ,查看普林斯頓大學首本比特幣教科書初稿《比特幣用戶的特性(Characteristics of Bitcoin Users)》

回復 普林斯頓 ,查看普林斯頓大學首本比特幣教科書初稿《比特幣和數字貨幣技術(Bitcoin and Cryptocurrency Technologies)》

回復 IMF,查看國際貨幣基金組織報告《Virtual Currencies and Beyond: Initial Considerations》

回復 DTCC ,查看美國存管信託清算公司報告《DTCC: 擁抱分布式》

回復 廣發 ,查看報告《科技前沿報告:區塊鏈:正快速走進公眾和政策視野》

回復 川財1 ,查看報告《川財證券:區塊鏈技術調研報告之一:具有顛覆所有行業的可能性》

回復 川財2 ,查看報告《川財證券:區塊鏈技術調研報告之二:區塊鏈技術進化論-區塊鏈技術的國內實踐和展望》

回復 桑坦德 ,查看桑坦德銀行報告《The Fintech 2.0 Paper: rebooting financial services》

回復 拜佔庭 ,查看《拜佔庭將軍問題詳解》

回復 論文1 ,查看論文《比特幣閃電網絡:可擴展的離線即時支付》

回復 論文2 ,查看論文《比特幣骨幹協議》

回復 論文3 ,查看論文《數字貨幣是否應該進入Barbados央行國際儲備貨幣組合中》

回復 幫助 ,查看本公眾號全部關鍵詞列表

點擊下方「閱讀原文」查看更多,頁面出現後再點擊「來源」可以查看譯文原文連結 

相關焦點

  • 【圖學院】區塊鏈與密碼學全民課堂第5-1講:哈希函數簡史
    導語:本課堂用通俗易懂的系列內容為大家呈現區塊鏈與密碼學領域相關知識。這裡有知識也有故事,從感興趣到有樂趣,全民課堂等你來學。這個系列中的課程內容首先從比特幣著手進行入門介紹,再延伸至區塊鏈的相關技術原理與發展趨勢,然後深入淺出地依次介紹在區塊鏈中應用的各類密碼學技術。歡迎大家訂閱本公眾號,持續進行學習。
  • 區塊鏈的三個「天然缺陷」|區塊鏈技術|算法|程式語言|哈希_網易科技
    我們總是會把區塊鏈技術「完美化」,殊不知,在經濟學家、密碼學家、計算機科學家眼中,區塊鏈技術還有很多需要改進的地方。例如《區塊鏈核心技術開發與應用》就認為目前區塊鏈技術在數學工具、博弈論、密碼學、代碼存在局限性的情況下,還有很大的改進空間。換言之區塊鏈技術要想被大規模商用,還有很長的路要走。那麼,目前的區塊鏈還存在什麼不完美的地方呢?
  • Comunion 區塊鏈深度學習系列|哈希算法的應用
    :hash Merkle Root(交易Merkle樹根),第四層是:n Time(時間戳);第五層是:n Bits(難度值);第六層是:n Nonce(隨機數);第七層是:Hash(哈希函數)。此時可以把這7個數據看成一個整體,前面6個數據是X,把X放在哈希函數裡面,會出來一個值,比如說Y值。由於比特幣網絡裡使用的哈希算法是SHA-256,當Y值出來之後,就會得到一個256個由0和1組成的字符串。這個字符串出來之後,它會和X裡面的難度值比較大小。
  • 一文讀懂哈希函數
    對於區塊鏈技術以及加密數字貨幣而言,要使得哈希函數達到密碼安全,還需要要求其具有以下特性:1、碰撞阻力碰撞的概念:如果有兩個不同的值X,Y,H(X)=H(Y)成立,則稱哈希函數H產生了碰撞。而碰撞阻力是指無法找到兩個不同的值X,Y使得H(X)=H(Y)。由碰撞阻力的解釋和哈希函數的特性,會很容易的得出產生碰撞是一個必然的現象。
  • 哈希函數的特點及應用介紹
    原本呢,我是計劃在第二篇就開始進入程序開發的部分,只是我發現到,不先了解哈希函數的原理功能、或是留給讀者自行google,會破壞這個系列文章的完整性,尤其是在實作內存塊鏈的不可逆性、或是Key創建等功能,讀者的感受與理解會有差異,所以還是決定,在進入開發區塊鏈之前,寫一篇文章來專門介紹哈希函數,尤其是其在密碼學方面的應用 哈希函數應用在區塊鏈的哪些地方?
  • 區塊鏈記帳原理
    區塊鏈(1.0)是一個基於密碼學安全的分布式帳本,是一個方便驗證,不可篡改的帳本。 通常認為與智能合約相結合的區塊鏈為區塊鏈2.0, 如以太坊是典型的區塊鏈2.0 很多人只了解過比特幣,不知道區塊鏈,比特幣實際是一個使用了區塊鏈技術的應用,只是比特幣當前太熱,把區塊鏈技術的光芒給掩蓋了。區塊鏈才是未來,期望各位開發人員少關心幣價,多關心技術。
  • Comunion 區塊鏈深度學習系列|哈希碰撞原理
    本篇專門講解哈希碰撞原理,這對於哈希算法的理解是非常重要的。如果把這個理解透了,那麼哈希算法裡面的很多特點,包括區塊鏈當中為什麼使用哈希算法,那麼基本上就完全通透了。定義摘要函數(哈希函數),其實是一個安全性定義。
  • 王小雲院士:密碼學是區塊鏈技術的起源
    科技日報記者 劉傳書12月7日,由中國科學院學部主辦、中國信息通信研究院等單位聯合支持的「區塊鏈技術與應用」科學與技術前沿論壇在深圳舉辦。中國科學院信息技術科學部鄭志明院士、數學物理學部王小雲院士等四位院士發表主題演講,同時還有300餘名來自政府和企業界的代表出席會議,圍繞區塊鏈與數字身份、監管科技、金融應用等話題展開討論。中國科學院院士、清華大學高等研究院「楊振寧講座」教授、國際密碼協會會士(IACR Fellow)王小雲院士,在大會上進行了主題為「Hash函數與區塊鏈技術」的開幕報告。
  • 什麼是區塊鏈哈希值?
    隨著加密貨幣的發明和區塊鏈的建立,很多人發現他們要處理的術語和概念在很長一段時間內都是未知的。這仍然是一個非常複雜的領域,需要深入的進行研究。
  • 【圖學院】這裡有哈希函數「家族」的秘密......
    哈希函數是現代密碼體系中的一個重要組成部分,被普遍應用在社會生產生活當中。平時大家比較感興趣的數字貨幣,就使用了哈希函數。從理論角度來看,哈希函數是以任意長度的數據為輸入,輸出相應固定長度的值(比如,32byte)。這個值為哈希值,又稱摘要、散列、雜湊、指紋。這可能看起來很難理解,其實就是一種數學函數,輸入的長度可以是任意的,但輸出的長度是固定的。
  • 區塊鏈基礎-哈希(hash)是什麼
    如果你從事編程,或者對區塊鏈感興趣,那麼哈希這個詞肯定經常聽到,那麼哈希到底是什麼,今天就簡單聊一聊。首先我有一個算法,有一個輸入和一個輸出,換句話說當你輸入一個數據,我返回給你一個數據。這只是哈希的一個特點,並且我上面的例子並不是非常確定,首先上面的例子,當我知道輸出的數據是什麼的時候,我可以推算出輸入的數據是什麼。這樣是非常不安全的,如果哈希算法是這樣,那麼也就沒有用了。那麼下一個特點就出來了:根據輸出結果,不能計算出輸入結果。就是說在上一個特點的基礎上,我們不僅讓輸出的數據唯一,而且輸出的數據不能在推算出輸入數據。
  • 區塊鏈雲起,產業變革的新風尚
    1.哈希計算是一個壓縮任意輸入字符串到固定長度輸出字符串的數學計算,但卻是不可逆的函數1)哈希函數是一個數學函數,具有以下三個特性:a)其輸入可為任意大小的字符串;b)它產生固定大小的輸出,假設輸出值為256位;c)它能進行有效計算。簡單來說就是對於特定的輸入字符串,在合理的時間內,我們可以算出哈希函數的輸出。
  • 科普 | 哈希函數的過去、現在與未來
    以下文章來源於以太坊愛好者 翻譯&校對: 閔敏 & 阿劍科普 | 哈希函數的過去、現在與未來哈希值和哈希函數的概念是初次入門區塊鏈的人常聽到的兩個關鍵詞
  • 區塊鏈中的數學(四十一)
    本文開始講隨機可驗證函數(VRF)的內容。VRF基本概念 可驗證隨機函數(VRF)是公鑰密碼學與哈希函數結合的另外一種應用方式。只有私鑰的持有者才能計算哈希。但是任何擁有公鑰的人都可以驗證哈希的正確性。VRF有助於防止枚舉基於哈希的數據結構攻擊。
  • 區塊鏈中的哈希值是做什麼的
    哈希值不是一個「密碼」,我們不能通過解密哈希來檢索原始數據,它是一個單向的加密函數。 你知道嗎,我們可以在哈希算法的幫助下,以固定的字符串長度保存網際網路上的所有數據。我們使用一個數學算法稱為SHA-256(安全哈希算法-256位)。SHA 256是SHA-1的繼承者,SHA-1有160位。 2. 如何在區塊鏈中使用哈希值?
  • 一文讀懂區塊鏈中的哈希值
    你知道嗎,我們可以在哈希算法的幫助下,以固定的字符串長度保存網際網路上的所有數據。我們使用一個數學算法稱為SHA-256(安全哈希算法-256位)。SHA 256是SHA-1的繼承者,SHA-1有160位。2. 如何在區塊鏈中使用哈希值?在區塊鏈中,每個塊都有前一個塊的哈希值,前一個塊被稱為當前塊的父塊,如果考慮父塊有一個當前區塊。它將會有上一個塊的哈希值即父塊。在區塊鏈中,每個塊都有前一個塊的哈希值。
  • 比特幣的加密本質: 哈希函數是什麼?
    什麼是哈希?  加密哈希函數是在數字數據上運行的數學運算。在比特幣中,所有操作都使用SHA256作為底層加密哈希函數。  安全哈希算法是由美國國家安全局(NSA)設計的一套加密哈希函數。  1)毫不含糊:哈希 (輸出)就像輸入數據的指紋。
  • 你完全可以理解區塊鏈
    3哈希算法哈希算法(Hash)即哈希函數,哈希算法在區塊鏈的實現中無處不在,準確理解哈希算法的特點,是深入理解區塊鏈技術原理的關鍵。區塊鏈通過哈希算法確保了每一筆交易的完整性,每個區塊的完整性和區塊鏈自身的可靠性。
  • 哈希(Hash)和哈希樹(Merkletree)
    哈希函數(英語:Hash function)又稱散列函數,是一種從任何一種數據中創建小的數字「指紋」的方法。散列函數把消息或數據壓縮成摘要,使得數據量變小,將數據的格式固定下來。
  • 從零搞懂區塊鏈(16):SHA256原理
    SHA256算法中用到了8個哈希初值以及64個哈希常量。以上就是對哈希函數SHA256的一些介紹,有興趣的小夥伴可以繼續深入研究。到本次介紹為止,比特幣區塊鏈的主要技術就基本介紹完啦,下次我們將對區塊鏈的應用場景和大家做交流,歡迎大家持續關注,謝謝!(to be continued...)