比特幣的加密本質: 哈希函數是什麼?

2021-02-23 瀋陽四塊科技

  什麼是哈希?

  加密哈希函數是在數字數據上運行的數學運算。在比特幣中,所有操作都使用SHA256作為底層加密哈希函數。

  安全哈希算法是由美國國家安全局(NSA)設計的一套加密哈希函數。

  1)毫不含糊:哈希 (輸出)就像輸入數據的指紋。因此,從數字輸入的哈希中,您無法創建原始數字輸入。

  2)抗衝突:任何人都不可能能夠找到導致相同哈希輸出的兩個不同輸入值。換句話說,對於任何不同的輸入,總會有不同的輸出。這允許使用這個函數來檢查數據完整性,通過將計算的「哈希」(算法執行的輸出)與已知和期望的哈希進行比較,可以確定數據的完整性。例如,計算下載文件的哈希,並將結果與之前發布的哈希進行比較,可以顯示下載是否被修改或篡改。

  但是為什麼哈希在區塊鏈中如此重要呢?

  這是挖礦過程和礦工職責的一部分: 礦工獲取一些交易並將其用作輸入的一部分,他們試圖計算一個哈希函數來為鏈提供一個新的塊。

  加密哈希算法有很多。下面列出了一些相對經常被引用的算法。可以在包含加密哈希函數比較的頁面上找到更廣泛的列表。

  MD5

  MD5是由Ronald Rivest在1991年設計的,用於替換以前的哈希函數MD4,並在1992年指定為RFC 1321。對MD5的衝突可以在幾秒鐘內計算出來,這使得該算法不適合大多數需要加密哈希的用例。MD5生成128位(16位元組)。

  SHA-1

  SHA-1是美國政府Capstone項目的一部分。該算法的最初規範——現在通常稱為SHA-0——由美國政府標準機構NIST(國家標準與技術研究所)於1993年以「安全哈希標準FIPS PUB 180」的名義發布。它在出版後不久就被美國國家安全局撤回,並被1995年在FIPS PUB 180-1(通常稱為SHA-1)上出版的修訂版所取代。SHA-1生成一個160位(20位元組)的哈希。

  文檔可能只將SHA-1稱為「SHA」,這可能與其他標準哈希算法(如SHA-0、SHA-2和SHA-3)相衝突。

  RIPEMD - 160

  RIPEMD (RACE Integrity Primitives Evaluation Message Digest)是由比利時魯汶大學(Katholieke Universiteit Leuven) COSIC研究小組的Hans Dobbertin、Antoon Bosselaers和Bart Preneel在魯汶開發的一個加密哈希函數,於1996年首次出版。RIPEMD基於MD4中使用的設計原則,其性能類似於更流行的SHA-1。然而,RIPEMD-160並沒有被破壞。顧名思義,RIPEMD-160生成160位(20位元組)的哈希。

  Whirlpool

  在計算機科學和密碼學中,Whirlpool是一個加密哈希函數。它是由Vincent Rijmen和Paulo s.l. M. Barreto設計的,他們在2000年首次描述了它。Whirlpool是基於一個基本修改版本的高級加密標準(AES)。Whirlpool生成一個512位(64位元組)的哈希。

  SHA-2

  SHA-2(安全哈希算法2)是由美國國家安全局(NSA)設計的一組加密哈希函數,於2001年首次發布。它們是使用merker - damgard結構(來自單向壓縮函數本身)構建的,使用分類的專用塊密碼器中使用的Davies結構來構建。

  SHA-2基本上由兩種哈希算法組成:SHA-256和SHA-512。SHA-224是SHA-256的一個變體,具有不同的初始值和截斷的輸出。SHA-384和不太為人所知的SHA-512/224和SHA-512/256都是SHA-512的變形。在AMD64等64位上,SHA-512比SHA-256更安全,而且通常比SHA-256更快。

  以位為單位的輸出大小由「SHA」名稱的擴展名給出,因此SHA-224的輸出大小為224位(28位元組),SHA-256生成32位元組,SHA-384生成48位元組,最後SHA-512生成64位元組。

  SHA-3

  SHA-3 (Secure Hash Algorithm 3)於2015年8月5日由NIST發布。SHA-3是更廣泛的Keccak的一個子集。Keccak算法是Guido Bertoni、Joan Daemen、Michael Peeters和Gilles Van Assche的成果。Keccak基於sponge 結構,sponge 結構還可以用於構建其他加密原語,如流cypher。SHA-3提供與SHA-2相同的輸出大小:224、256、384和512位。

  還可以使用SHAKE-128和SHAKE-256函數獲得可配置的輸出大小。這裡名稱的-128和-256擴展表示函數的安全強度,而不是以位為單位的輸出大小。

  BLAKE2

  2012年12月21日,布萊克的改版產品BLAKE2發布。它是由Jean-Philippe Aumasson、Samuel Neves、Zooko Wilcox-O 'Hearn和Christian Winnerlein創建的,目標是取代廣泛使用的MD5和SHA-1算法。當運行在64x64和ARM架構上時,BLAKE2b比SHA-3、SHA-2、SHA-1和MD5更快。儘管BLAKE和BLAKE2還沒有被標準化為SHA-3,但它已經在許多協議中使用,包括argon2加密哈希,因為它在現代cpu上提供了很高的效率。由於BLAKE是SHA-3的候選對象,BLAKE和BLAKE2都提供了與SHA-3相同的輸出大小——包括可配置的輸出大小。

相關焦點

  • 比特幣中的密碼學:哈希函數五大特性和挖礦原理
    比特幣是世界上第一種成功的加密貨幣,之前的嘗試都沒有像比特幣這樣有效解決有關貨幣的各種問題。
  • 科普 | 哈希函數的過去、現在與未來
    比特幣和以太坊網絡的安全性的關鍵一環是:它能將表達網絡全局狀態的大塊信息壓縮成一個簡短的消息。在有需要之時,我們可以高效地驗證這個消息的真實性。這個過程就是用哈希函數來完成的,而得到的結果(消息)就是哈希值。- 即使只更改輸入中的一個字符,最後得出的哈希值也會完全不同 -密碼學哈希廣泛應用於口令存儲和文件驗證系統。
  • 哈希函數的特點及應用介紹
    這個故事讓我想起了Bitcoin等加密貨幣的挖礦程序算法,在過去一段時間以來對我們生活的衝擊影響。還記得2017年加密貨幣正夯時,全球的挖礦熱潮引爆的全民搶電瘋,當時就有媒體報導指出,加密貨幣的挖礦機器將會導致社會大眾無電可用,甚至有人傳言,那年夏天的幾次臺電臨時跳電事件,就是太多人在挖比特幣造成的。 這篇文章,就是要來談談比特幣挖礦背後的那個算法:加密哈希函數。
  • 理解數字籤名、加密通信的關鍵:哈希算法
    哈希函數的運算結果就是哈希值,通常簡稱為哈希。哈希函數有時候也翻譯做散列函數。  不同的哈希算法,哈希位數越多,也就基本意味著安全級別越高,或者說它的」抗碰撞性「就越好。  再來說說哈希函數的主要作用。哈希的獨一無二性,保證了如果數據在存儲或者傳輸過程中有絲毫損壞,那麼它的哈希就會變。哈希函數的最常見的一個作用就是進行完整性校驗( Integrity Check ),完整的意思是數據無損壞。
  • 什麼是哈希算法
    哈希,英文是 hash ,本來意思是」切碎並攪拌「,有一種食物就叫 Hash ,就是把食材切碎並攪拌一下做成的。哈希函數的運算結果就是哈希值,通常簡稱為哈希。哈希函數有時候也翻譯做散列函數。所以,哈希函數的安全性肯定是個相對概念。如果出現了兩個不同輸入有相同輸出的情況,就叫碰撞,collision 。不同的哈希算法,哈希位數越多,也就基本意味著安全級別越高,或者說它的」抗碰撞性「就越好。再來說說哈希函數的主要作用。
  • 一文讀懂哈希函數
    哈希函數哈希函數(Hash):h=H(Data)定義哈希函數H,將可變大小的數據Data作為輸入,產生固定長度的h值。
  • 哈希函數--區塊鏈的back bone
    哈希函數不管是在數據結構還是在分布式共識方面都是非常重要的,那麼什麼是哈希函數呢?一般來說哈希函數是一類可以把任何數據轉換成固定長度輸出(也就是我們說的哈希值)的數學函數,而且可以被高效的計算, 所以我們一般會用來構建哈希表等。在此基礎上密碼學哈希還多了3個特性。
  • 科普:什麼是加密貨幣挖礦?
    起初,我覺得這簡直就是一個免費的貨幣生成器,只要我讓我的筆記本電腦像風火輪一樣呼呼地運行 Crypto-mining 軟體,它就會給我免費的加密貨幣。最後,我的筆記本電腦確實產生了加密貨幣,然而,只有非常非常少的加密貨幣。我用我的筆記本電腦做的事情,本質上是「加密挖礦」。
  • 哈希算法現狀——原因、方法及未來
    哈希算法有一個問題,就是衝突必然性(inevitability of collisions)。它的意思是:由於哈希函數輸出的字符串長度一定,不同的輸入有可能會產生相同的哈希值。衝突是不好的,如果一個攻擊者能夠故意產生衝突,他便能夠把惡意的文件或者數據偽裝成正確的哈希值並將其傳遞下去。一個好的哈希函數的目標是讓衝突的發生變得幾乎不可能。
  • 哈希函數和哈希表
    其核心就是哈希函數和哈希表的應用!哈希函數哈希函數又稱為散列函數,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能從散列值來唯一的確定輸入值。
  • 【圖學院】這裡有哈希函數「家族」的秘密......
    哈希函數是現代密碼體系中的一個重要組成部分,被普遍應用在社會生產生活當中。平時大家比較感興趣的數字貨幣,就使用了哈希函數。從理論角度來看,哈希函數是以任意長度的數據為輸入,輸出相應固定長度的值(比如,32byte)。這個值為哈希值,又稱摘要、散列、雜湊、指紋。這可能看起來很難理解,其實就是一種數學函數,輸入的長度可以是任意的,但輸出的長度是固定的。
  • 哈希函數
    如果能預先建立表中關鍵字Key與其存儲位置之間的函數,即元素的存儲位置是其關鍵字的函數f(key)的值,那麼查找過程就可以實現。1、構造哈希函數f2、處理衝突問題構造哈希函數的常用方法 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  • AITD小課堂第十二課:哈希算法是什麼?非對稱加密是什麼?
    哈希算法是什麼? 區塊鏈的四大核心技術分別是密碼學、分布式帳本、共識機制以及智能合約。而密碼學作為其中最重要的一部分,可以說是區塊鏈的基石,而其他技術是以密碼學為地基,才能搭建出區塊鏈這座高樓大廈。
  • 區塊鏈的三個「天然缺陷」|區塊鏈技術|算法|程式語言|哈希_網易科技
    顯然,「納什均衡」狀態下的博弈論已經無法支撐以比特幣為代表的區塊鏈技術的前行。亟待進行一場新的基礎科學的變革。3哈希算法的掣肘「區塊鏈技術的核心其實是密碼學,密碼學的重點則是哈希函數。」《區塊鏈核心應用與開發》這本書提到。你在區塊鏈上的每一筆轉帳、挖礦、應用開發等等,只要涉及鏈上數據處理,都會涉及哈希函數。
  • 小學生也能看懂的哈希函數工作原理
    這是一篇哈希函數/散列函數(hash function)的基礎入門,相信點進這篇教程的朋友都是想對哈希函數的基本概念和它的工作原理有基本了解的人。本文的目的是從一般的意義上去解釋它,因此我將省略到論證與具體的實現,而將重點放在高級原則上。
  • 哈希(Hash)和哈希樹(Merkletree)
    哈希函數(英語:Hash function)又稱散列函數,是一種從任何一種數據中創建小的數字「指紋」的方法。散列函數把消息或數據壓縮成摘要,使得數據量變小,將數據的格式固定下來。
  • Python 中 MD5 哈希函數的實現
    包括以下內容:什麼是MD5?它是一個哈希函數,可產生128位哈希值。可用作校驗和驗證數據完整性。它適用於非加密目的,例如確定分區資料庫中特定密鑰的分區。該哈希函數在Python的hashlib模塊中可用。它以字節序列作為輸入,並返回128位哈希值作為輸出。散列函數的主要用途是檢查數據完整性,但存在安全性問題。
  • 比特幣的分布式系統是如何記帳的?
    比特幣是一種公共記帳貨幣,每個人都有權利給這種貨幣記帳,而且這個帳本分布在全世界的每一個角度,每一次記帳的時候需要核對帳本的正確性,這就很麻煩,每天這麼多筆交易,到底怎麼核對的呢?當然如果你要用人工的方式去核實,那幾乎是不可完成的,但是用技術就簡單多了,用什麼技術呢?這種技術就叫做非對稱加密技術。
  • 比特幣,此物一出天下反
    比特幣最大的支撐是什麼,是數學。 最早支持比特幣的擁躉,是信仰數學的人。 在他們眼中,人是不可相信的,而數學就是上帝。 這就是比特幣的哈希碰撞,也是區塊鏈的工作本質,當然真實的題目並不是擲骰子這麼簡單,目前比特幣全網算力達到1300萬萬億次哈希碰撞每秒,相當於從100多萬個50米長的標準遊泳池裡面找到1粒藍色水滴。
  • 五分鐘帶你了解哈希算法
    他們安全性的重要部件,就是能夠壓縮網絡全部的狀態信息,變成很短,並且標準的信息,在需要的時候可以進行有效驗證,這就被稱之為哈希。到處都會使用加密哈希,從密碼存儲到文件驗證系統。使用確定性算法的基本原理,就是使用一個輸入,並且每次都產生一個固定長度的字符串。也就是說,使用同樣的輸入總是會導致同樣的輸出。