和數軟體:以最簡單的方式瞭解區塊鏈技術
瞭解比特幣和區塊鏈非常簡單,只要理解三部分, 第一是瞭解其資料結構,第二個就是分散式儲存和共識,第三就是網路和節點。
雜湊函式不管是在資料結構還是在分散式共識方面都是非常重要的,那麼什麼是雜湊函式呢?
一般來說雜湊函式是一類可以把任何資料轉換成固定長度輸出(也就是我們說的雜湊值)的數學函式,而且可以被高效的計算, 所以我們一般會用來構建雜湊表等。
在此基礎上密碼學雜湊還多了3個特性。
- 是無衝突
- 可以隱藏原資料
- 可以用來建立搜尋謎題
無衝突的意思呢,是指這個雜湊函式永遠不會把兩個不同的數轉換成同樣的雜湊值。
我們以sha-256為例(sha-256也是比特幣裡用到的雜湊函式,屬於sha-2系列),它可以將資料,不管這個資料(輸入)多大或者多小都可以轉換成256位元,也就是32位元組的一個雜湊值。
就算這個資料(輸入)只更改來一個標點符號,生成的雜湊值也是完全不一樣的。
但是理論上來講,雜湊值重複的情況是存在的,我們稱這種情況為衝突,因為你想啊, 這個輸入是無限的,你可以輸入任何資料,大的小的都行。 而這個輸出,雜湊值它是有限的。(32位字母和數字的組合,組合的次數是有限的)但是這個數字是很大的,如果你要找到sha-256雜湊值重複的這種情況,就是試2的130次方的輸入,這個數字是一個天文數字,我的電腦都打不出來。 所以呢沒有人能找到衝突也就是雜湊值重複的情況。
在確定來雜湊值的獨一性後,我們就可以用雜湊值來作為識別檔案。在檔案很大的情況下就異常的有用了。當然這個只是初級玩家的用法。
高階玩家玩更溜了。
相信玩程式設計的朋友都知道一種資料結構叫linked list。
單向linked list
就是用指標把不同的資料塊按順序連結起來,那麼現在我們確定了雜湊值的獨一性後,是不是可以把這個雜湊值拿來當指標用呢?
具體怎麼實現呢?
首先計算出第一個資料塊的雜湊值,然後把這個值放在第二個資料塊裡,再計算第二個資料塊(包含了第一個資料塊的雜湊值)值,以此類推,你就得到了一種新的資料結構,俗稱區塊鏈。
當然,這只是區塊鏈資料結構,而不是我們現在說的區塊鏈技術(後者還包含了分散式儲存和分散式共識,還有點對點網路)然後這個資料結構比起linkedlist多了一個特性,那就是防篡改。任何人想要修改這個鏈裡資料塊的訊息,都會很容易被發現,因為雜湊值會對不上。
可以隱藏原資料
密碼雜湊函式的第二個特性就是可以隱藏原資料,因為雜湊函式是單向函式,你可以把資料轉換成雜湊值,但是不能把雜湊值轉換成原資料。因此,雜湊函式有可以隱藏原資料的特性。
這個就非常有用了,最知名的應用就是拿來儲存密碼。
比如說你在某網站的密碼,如果這個網站直接把你的密碼存在了他們的伺服器上,那是非常不安全的,但是如果是儲存了你的密碼對應的雜湊值,你每次輸入密碼的時候後臺自動轉化成雜湊值,只要雜湊值對上就可以登陸了。這樣安全性就提高了很多。
但是為什麼還有那麼多盜號,盜密碼的情況發生呢?那可能是因為你的密碼很常見,所以黑客只要需要輸入所有常見的密碼,然後用雜湊值一對比,就知道了。
所以要想安全的隱藏“原資料的”的話,對輸入的隨機性和廣泛性有要求的。 也就是為什麼很多網站硬性要求密碼要有符號,有大寫字母,小寫字母,數字等。
可以用來建立搜尋謎題
第三個特性就是建立搜尋謎題,就是我用雜湊函式建立一系列的數學難題,然後再給出一定範圍(難度隨著範圍大小變大變小)的可能答案,然後讓你一個個的去試,(注意的是,這個是沒有任何捷徑的,就像我們之前將的那樣,改一個標點符號雜湊值就會完全不一樣,而且這個雜湊值的生成也是沒有任何邏輯和規律可循,所以只能一個一個的試)如果運氣好,找到了正確的答案,把答案和你解決的這個難題的資訊一起雜湊就會得到特殊的雜湊值。(如以很多0開頭啊,或者以很多x結束啊類似的) 。
這個運用在比特幣挖礦裡, 如果你找到了答案(nonce),然後和區塊頭裡的資訊一起雜湊,就會得到一個以很多0開頭的特殊的雜湊值。
相關文章
- 什麼是區塊鏈,簡單瞭解區塊鏈區塊鏈
- 和數軟體區塊鏈技術再次推進創新實踐區塊鏈
- 和數軟體:什麼是區塊鏈技術與加密貨幣區塊鏈加密
- 火熱的區塊鏈技術瞭解一下區塊鏈
- 區塊鏈-技術簡介區塊鏈
- 區塊鏈技術研發,如今最契合區塊鏈技術應用方向區塊鏈
- 三分鐘,快速瞭解區塊鏈技術!區塊鏈
- 帶著小白瞭解下區塊鏈技術區塊鏈
- 區塊鏈技術的領先的區塊鏈數字資產區塊鏈
- 區塊鏈技術公司談以色用區塊鏈改善網路安全區塊鏈
- 區塊鏈改進身份和訪問管理技術(IAM)的方式區塊鏈
- 數字區塊鏈技術:身份和訪問管理區塊鏈
- 區塊鏈社交直播app軟體開發,區塊鏈技術應用落地開發區塊鏈APP
- 區塊鏈IM社交直播軟體開發方案,區塊鏈技術應用開發區塊鏈
- 區塊鏈技術區塊鏈
- 區塊鏈溯源技術,區塊鏈溯源防偽解決方案區塊鏈
- 區塊鏈技術工坊 - 線下區塊鏈技術分享區塊鏈
- 區塊鏈社交直播軟體開發app,區塊鏈技術應用落地開發方案區塊鏈APP
- 區塊鏈的核心技術區塊鏈
- 區塊鏈以及區塊鏈技術總結區塊鏈
- 區塊鏈101:區塊鏈技術是如何工作的?區塊鏈
- 什麼是區塊鏈,區塊鏈技術研發解決方案區塊鏈
- 簡單說區塊鏈區塊鏈
- 區塊鏈:《區塊鏈 技術驅動金融》筆記和總結區塊鏈筆記
- 區塊鏈公司暢談區塊鏈技術的價值區塊鏈
- 區塊鏈安全————區塊鏈技術安全討論區塊鏈
- 使用ABAP實現一個最簡單的區塊鏈原型區塊鏈原型
- 一個簡單的區塊鏈區塊鏈
- 區塊鏈技術發展_區塊鏈技術開發新方向區塊鏈
- 區塊鏈溯源技術是什麼?區塊鏈溯源技術開發區塊鏈
- snap和apt的區別簡單瞭解[]APT
- 區塊鏈技術開發主鏈區塊鏈的應用分析區塊鏈
- 圖解區塊鏈:14張圖看懂什麼是“區塊鏈技術”?圖解區塊鏈
- 區塊鏈公鏈的開發丨技術講解方案區塊鏈
- 區塊鏈不談技術的都是韭菜——區塊鏈技術組成及架構區塊鏈架構
- 61行程式碼構建最簡單區塊鏈行程區塊鏈
- BAAS平臺_區塊鏈baas平臺技術_區塊鏈技術開發區塊鏈
- 技術沙龍|區塊鏈商用落地的策略與技術坑-區塊鏈擴充套件和Fabric商用(杭州)區塊鏈套件