Hash是什麼?5分鐘帶你了解區塊鏈雜湊相關的知識

Hash是什麼?5分鐘帶你了解區塊鏈雜湊相關的知識

你可能沒聽過區塊鏈這個名詞,但你一定聽過 比特幣,比特幣可是近年來各個報章雜誌或網路媒體最喜愛的主題之一,不過比特幣其實只是一個建立在區塊鏈概念上的應用,區塊鏈才是比特幣的根本概念,那 區塊鏈是什麼呢?區塊鏈技術又有哪些艱深的名詞呢?我們現在就來了解雜湊(Hash)到底是什麼。

Hash是什麼?

雜湊(Hash)算法原先是一種用在資料編碼中的技術,最主要分為Hash Function(雜湊函數)和Hash Table(雜湊表)兩個部份,其中hash function是一種將任意資料映射成為固定長度的技術,hash table則是儲存(Key,Value)這種對應關係的資料結構,我們會對hash function和hash table做簡單的介紹,欲深度了解hash table的可以觀看我們文末的參考資料。

Hash Function是什麼?

雜湊函式Hash Function是一種將輸入值映射到另一個值域的技術,Hash Function的底層有非常複雜的數學式,式子中蘊含了一些magic number,有興趣鑽研的可以再去尋找一些論文來研讀,這邊就不多作介紹,因此在這邊可以直接想像Hash Function就是一台轉換器,丟輸入進去就會產生一個輸出,而這種轉換有一個很重要的特性就是「單向」,也就是one-way function,輸入可以經由轉換得到輸出,但輸出卻不可得到輸入,具有不可逆的特性。

Hash Table是什麼?

雜湊表Hash Table是一種儲存(Key,Value)的資料結構,通常一個Key就是對應一個Value,Value就是要儲存的資料,Key則可以想像成這筆資料的標籤,想要找到這筆資料就需要有這筆資料的Key去搜尋,比如有一些資料是許多車主的姓名和車子的廠牌:

Hash Table的範例

很明顯的,左邊是車主姓名,右邊是該車主的車子廠牌,因此我們可以假定Key是車主姓名,Value是車子廠牌,那去尋找key名稱為”Michael”的,就可以找到他的Value、也就是車子廠牌為”Tesla”。而這邊提到的Hash Table,Key和Value分別擺放的就是原始輸入,以及經由Hash Function轉換過的輸出。有一個重點要說明,有些Hash Function有可能會發生一種情況:不同輸入,結果輸出相同,這樣放到Hash Table上,就等於有多個Key都可以指到同一個Value,這樣今天如果我得到這個Value,我就會分不出來是用哪把Key去呼叫資料的,這種情況稱為”衝突Collision”,在比較舊的幾種Hash Function,例如MD2、MD5等就有這種衝突的情況,但對於要能用在區塊鏈上的Hash卻是不能有這種衝突的情況的,原因有許多例如:沒辦法作為電子簽名的辨別之用,因此使用在區塊鏈的Hash技術比較常用的種類是密碼雜湊函式(Cryptographic Hash Function)。

Cryptographic Hash Function是什麼?

密碼雜湊函式Hash Function的一種類型,也具有hash function所有的性質,但密碼雜湊函式得出的輸出不會發生衝突(collision)的情況,具有「碰撞抵抗性」(Collision-Resistant),因此可明確分辨輸入訊息是否不同,因此在區塊鏈當中,都是使用密碼雜湊函式作為hash function。

在密碼雜湊函式中有許多不同的演算法,常見的有MD5、SHA家族,在比特幣中使用的hash算法就是使用SHA家族當中的SHA-256演算法。

密碼雜湊函式例子:

密碼雜湊式實際例子

例子中可看出多了一個驚嘆號,輸出結果就會有很大的改變,有興趣的各位能夠上網搜尋線上hash就會有很多網站可以玩玩看各個語詞的hash值囉!

SHA是什麼?

安全散列演算法 SHA(Secure Hash Algorithm)是密碼雜湊函式的一種安全標準,SHA家族的演算法,由美國國家安全域(NSA)所設計,並由美國國家標準與技術研究院(NIST)發布,是美國的政府標準。

常見的SHA家族有SHA-1、SHA-2當中的SHA-256和SHA-512等等,其中的SHA-256演算法,無論放進任何的輸入,經由hash function得到的輸出長度都會剛好是256 bits,維基上有提供SHA-256的虛擬碼,有興趣的可以上去看一下 :https://zh.wikipedia.org/wiki/SHA-2

小知識:2017年荷蘭密碼學研究小組CWI和Google正式宣布攻破了SHA-1

Hash常見用途

檔案校驗碼

使用者密碼儲存和比對

可以把要隱藏的資料用Hash的方式加密起來,想要確認該加密密文(見:小知識)的原始資料時也可以用Hash的特性來確認,比如把使用者密碼Hash起來再儲存,這樣資料庫中就不會直接儲存公開的使用者密碼,而今天想要確認使用者輸入的密碼是否正確只需要把使用者輸入的密碼Hash起來跟資料庫當中儲存的密文做比對就可以。

小知識:明文(Plain Text)和密文(Cipher Text)是密碼學中的基礎名詞,概念很簡單,明文指的就是加密前原始資料, 明文加密之後就會變密文。比如上方Hash的例子當中,Hi, We are blockbar就是明文,密文就是9cd454c137d2910ea3333d2167b899242b876e5c1fb489f1906f34f680951851。

了解Hash的意思之後,下個部分,我們將會介紹DAY9 區塊鏈中的數位簽章機制,歡迎大家追蹤我們!

Hash是什麼

*台灣區塊鏈協會證照專班 (企業內訓、個人進修、就業輔導、活動邀約等)

CBA亞洲區塊鏈學院

*亞洲區系統技術開發商 (智慧生產系統、網站建置、智能合約、區塊鏈技術等)

巴克夏夫科技股份有限公司

精選推薦文章

【區塊鏈懶人包】精選6大加密貨幣 crypto 信用卡

【區塊鏈小學堂】全台最專業區塊鏈教育機構-CBA亞洲區塊鏈學院-開啟您的區塊鏈學習之旅

【區塊吧懶人包】7個常見之加密貨幣冷錢包

【區塊吧懶人包】20家推薦加密貨幣交易所全攻略

【區塊鏈小學堂】Crypto交易培訓首選課程推薦

【區塊吧最速報】3分鐘比特幣走勢分析(過往分析大補帖)

其他推薦文章

【區塊鏈懶人包】精選6大加密貨幣 crypto 信用卡

【區塊吧最速報】1分鐘了解最新比特幣價格 bitcoins price

【區塊吧最速報】3分鐘比特幣走勢分析(過往分析大補帖)

【區塊吧懶人包】7個常見之加密貨幣冷錢包

【區塊鏈懶人包】Metamask小狐狸錢包1分鐘全攻略介紹

【區塊吧懶人包】20家推薦加密貨幣交易所全攻略

【區塊鏈懶人包】區塊 鏈是什麼?區塊鏈將是未來20年的資訊革命起點

【區塊吧懶人包】5分鐘帶你快速了解NFT是什麼?最完整全攻略

【區塊吧懶人包】5個你一定要知道的熱門NFT平台 NFT market

參考資料:

https://www.investopedia.com/news/cryptographic-hash-functions/

https://medium.com/d-d-mag/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%BD%A0%E9%9C%80%E8%A6%81%E6%87%82%E4%B8%80%E9%BB%9E%E5%AF%86%E7%A2%BC%E5%AD%B8-709c090452aa

https://blog.goodaudience.com/very-basic-intro-to-hash-functions-sha-256-md-5-etc-ed721622ff8

https://ithelp.ithome.com.tw/articles/10208884

https://blockgeeks.com/guides/what-is-hashing/?fbclid=IwAR1hsj4Tb2er0m2-8nU8P8omrgiDq-U_Pr0dPUzESQNuEioSqYENHovTfQE

Hash Table相關資料:

http://alrightchiu.github.io/SecondRound/hash-tableintrojian-jie.html

https://blog.techbridge.cc/2017/01/21/simple-hash-table-intro/

相关文章

EOP 简谱大师 彩票365软件是什么样的

EOP 简谱大师

📅 08-26 👁️ 2568
720p与1080p之间的区别。一个快速的答案 彩票365软件是什么样的

720p与1080p之间的区别。一个快速的答案

📅 07-23 👁️ 9046
全民突击佣兵哪个好 佣兵选择及玩法详解 彩票365软件是什么样的

全民突击佣兵哪个好 佣兵选择及玩法详解

📅 07-26 👁️ 4251