《區塊鏈技術指南》筆記 Hash演算法

2021-08-16 00:15:42 字數 1253 閱讀 1624

hash(雜湊或雜湊)演算法是資訊科技領域非常基礎也非常重要的技術。它能將任意長度的二進位制值(明文)對映為較短的固定長度的二進位制值(hash值),並且不同的明文很難對映為相同的hash值。

例如計算一段話」hello blockchain」的md5 hash值為830e6258b7b27489347f39535b86a52b

這意味著我們只要對某檔案進行md5 hash計算,得到結果為830e6258b7b27489347f39535b86a52b,這就說明檔案內容極大概率上就是」hello blockchain」。可見,hash的核心思想十分類似於基於內容的編址或命名。

注:hash值在應用中又被稱為指紋(fingerprint)、摘要(digest)。

注:md5是乙個經典的hash演算法,其和sha-1演算法都已經被證明安全性不足應用於商業場景。

乙個優秀的hash演算法,將能實現:

衝突避免有時候又被稱為「抗碰撞性」。如果給定乙個明文前提下,難以找到碰撞的另乙個明文,稱為「弱抗碰撞性」;如果難以找到任意兩個明文,發生碰撞,則稱演算法具有「強抗碰撞性」。

很多場景下,也要求對於任意長的輸入內容,輸出定長的hash結果。

目前流行的hash演算法包括md5、sha-1和sha-2。

md4(rfc1320)是在2023年設計的,md是message digest的縮寫。其輸出為128位。md4已證明不夠安全。

md5(rfc1321)是於2023年對md4的改進版本。它對輸入仍以512位分組,其輸出是128位。md5比md4複雜,並且計算速度要慢一點,更安全一些。md5已被證明不具備「強抗碰撞性」。

sha(secure hash algorithm)是乙個hash函式族,於2023年發布第乙個演算法。目前知名的sha-1在2023年面世,它的輸出長度為160位的hash值,因此抗窮舉性更好。sha-1設計時基於和md4相同的原理,並且模仿了該演算法。sha-1已被證明不具備「強抗碰撞性」。

為了提高安全性,nist還設計出了sha-224、sha-256、sha-384,和sha-512演算法(統稱為sha-2),跟sha-1演算法原理類似。sha-3相關演算法也已被提出。

目前,一般認為md5和sha-1已經不夠安全,推薦至少使用sha2-256演算法。

一般的,hash演算法都是算力敏感型,意味著計算資源是瓶頸,主頻越高的cpu進行hash的速度也越快。

也有一些hash演算法不是算力敏感的,例如scrypt,需要大量的記憶體資源,節點不能通過簡單的增加更多cpu來獲得hash效能的提公升。

《區塊鏈技術指南》筆記

對於多個服務節點,給定一系列操作,在約定協議的保障下,使得它們對處理結果達成 某種程度 的協同 傳統傳統分布式系統中討論一致性,往往是指在外部任意發起請求 如向多個節點傳送不同請求 的情況下,確保系統內大部分節點實際處理請求序列的一致,即對請求進行全域性排序 實際挑戰 節點間網路通訊不完全可靠 節點...

區塊鏈技術指南

前言 修訂記錄 如何貢獻 區塊鏈思想的誕生與概念 從數字貨幣說起 位元幣 前所未有的社會學實驗 區塊鏈核心概念 小結 區塊鏈技術的價值 挑戰與展望 商業價值 關鍵技術和挑戰 趨勢與展望 小結 典型應用場景 金融服務 徵信和權屬管理 資源共享 投資管理 物聯網與 鏈 其它場景 小結 分布式系統核心問題...

區塊鏈技術指南

這是一本開源的書籍,隨著位元幣的流行,區塊鏈的技術必將給社會帶來一些改變 1。區塊鏈的基本原理理解起來並不難。基本概念包括 交易 transaction 一次操作,導致賬本狀態的一次改變,如新增一條記錄 區塊 block 記錄一段時間內發生的交易和狀態結果,是對當前賬本狀態的一次共 識 鏈 chai...