了解比特幣和區塊鏈非常簡單,只要理解三部分, 第一是了解其數據結構,第二個就是分布式儲存和共識,第三就是網絡和節點。
哈希函數不管是在數據結構還是在分布式共識方面都是非常重要的,
那麼什麼是哈希函數呢?
一般來說哈希函數是一類可以把任何數據轉換成固定長度輸出(也就是我們說的哈希值)的數學函數,而且可以被高效的計算, 所以我們一般會用來構建哈希表等。
在此基礎上密碼學哈希還多了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央行國際儲備貨幣組合中》
回復 幫助 ,查看本公眾號全部關鍵詞列表
點擊下方「閱讀原文」查看更多,頁面出現後再點擊「來源」可以查看譯文原文連結