0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

解析加密貨幣中最常用的四種加密哈希函數(shù)的特性和差異

物聯(lián)網(wǎng)芯片 ? 來(lái)源:物聯(lián)網(wǎng)芯片 ? 作者:物聯(lián)網(wǎng)芯片 ? 2018-05-11 16:30 ? 次閱讀

你真是個(gè)特別的人

誰(shuí)能想到,我們之前用作校驗(yàn)文件,核驗(yàn)數(shù)據(jù)的一種算法,現(xiàn)在卻奠定了區(qū)塊鏈數(shù)字貨幣帝國(guó)大廈,這個(gè)算法有很多名字,比如一般叫做哈希算法(HASH的英文而來(lái)),有的也稱(chēng)在雜湊算法(很形象~~)或者散列算法等(以下我們統(tǒng)稱(chēng)哈希)。那么現(xiàn)在我們就來(lái)解開(kāi)這種算法的層層面紗,在本文中,我們將解析加密貨幣中最常用的四種加密哈希函數(shù)的特性和差異。但在此之前,還是需要了解哈希的含義。

什么是HASH(哈希)

簡(jiǎn)單來(lái)說(shuō),哈希意味著輸入任意長(zhǎng)度的字符串通過(guò)密碼運(yùn)算來(lái)實(shí)現(xiàn)固定長(zhǎng)度的輸出。在像比特幣這樣的加密貨幣的情況下,交易被視為輸入并通過(guò)哈希算法(比特幣使用SHA-256)運(yùn)行(該算法提供固定長(zhǎng)度的輸出)。

先了解下哈希算法是如何工作的。我們以SHA-256(256位安全哈希算法)為例。

在SHA-256的情況下,無(wú)論你的輸入有多大或多小,輸出總是有一個(gè)固定的256位長(zhǎng)度。這對(duì)于處理大量的數(shù)據(jù)和事務(wù)校驗(yàn)時(shí)非常關(guān)鍵,這里先看看哈希函數(shù)的各種特性以及它們?cè)趨^(qū)塊鏈中的實(shí)現(xiàn)方式。

加密哈希算法特性

哈希算法其特俗的特性使得非常適合密碼應(yīng)用,加密哈希算法具有以下幾個(gè)特性:

特性 1:確定性

這意味著無(wú)論 你通過(guò)哈希函數(shù)解析特定輸入多少次, 你都會(huì)得到相同的結(jié)果。這是至關(guān)重要的,因?yàn)槿绻看味嫉玫讲煌墓V?,就不可能跟蹤輸入?/p>

特性2:快速計(jì)算

哈希函數(shù)應(yīng)該能夠快速返回輸入的哈希。

性質(zhì)3:?jiǎn)蜗蛐?/p>

單向性指的是:假設(shè)A是輸入數(shù)據(jù)并且H(A)是輸出哈希結(jié)果,假設(shè)給定H(A)來(lái)倒推出A是“不可行”的(注意使用“不可行”一詞而不是“不可能”)。

因?yàn)槲覀円呀?jīng)知道從它的哈希值中確定原始輸入并不是“不可能”的。舉個(gè)例子吧。

假設(shè)你擲骰子,輸出是骰子出現(xiàn)的數(shù)字的哈希。我們將如何確定原始號(hào)碼是什么?很簡(jiǎn)單,所要做的就是從1-6中找出所有數(shù)字的哈希值并進(jìn)行比較。由于哈希函數(shù)是確定性的,所以特定輸入的哈??偸窍嗤?,因此 我們可以簡(jiǎn)單地比較哈希并找出原始輸入。

但是,只有在給定的數(shù)據(jù)量非常少的情況下,這才有效。當(dāng)你有大量的數(shù)據(jù)時(shí)會(huì)發(fā)生什么?假設(shè)你正在處理128位哈希。唯一必須找到原始輸入的方法是使用“暴力群舉”。暴力群舉基本上意味著你必須選取一個(gè)隨機(jī)輸入,對(duì)其進(jìn)行哈希,然后將輸出與目標(biāo)哈希進(jìn)行比較并重復(fù),直到找到匹配。

如果你使用這種暴力方法后:

最好的結(jié)果: 你可能在第一次嘗試時(shí)獲得答案,不過(guò)這只是理論上的可能,因?yàn)樗母怕适?的128次方分之1(自己去算算)。

最壞的情況:你在2 ^ 128 - 1次之后得到答案。基本上,這意味著你會(huì)在所有數(shù)據(jù)的末尾找到你的答案。

平均情景:在2 ^ 128/2 = 2 ^ 127次之后, 你會(huì)在中間的某處找到它。從這個(gè)角度來(lái)看,2 ^ 127 = 1.7 *10 ^ 38。換句話(huà)說(shuō),這是一個(gè)巨大的數(shù)字。

所以,雖然可以通過(guò)暴力方法來(lái)打破單向性,但同時(shí)也要有巨大的算力投入。

特性4:雪崩效應(yīng)。

即使 你對(duì)原始輸入數(shù)據(jù)進(jìn)行了小改動(dòng),哈希的結(jié)果差異也非常大。讓我們使用SHA-256對(duì)其進(jìn)行測(cè)試:

pIYBAFr1VVCAX5i_AACA70PLXvc100.png

即使你只是改變了輸入的第一個(gè)字母表的大小寫(xiě),看看它對(duì)輸出哈希值有多大影響。

這個(gè)特性也被稱(chēng)為雪崩效應(yīng)。

性質(zhì)5:防碰撞

給定兩個(gè)不同的輸入A和B,其中H(A)和H(B)是它們各自的哈希,H(A)等于H(B)是不可行的。這意味著大多數(shù)情況下,每個(gè)輸入都會(huì)有自己獨(dú)特的哈希。為什么我們說(shuō)“大部分”?為了理解這一點(diǎn),我們需要知道什么是“生日悖論”。

什么是生日悖論?

如果你在街上碰到任何陌生人,那么你們兩個(gè)都有相同的生日的可能性非常低。事實(shí)上,假設(shè)一年中的所有日子都有生日的可能性,另一個(gè)人分享你的生日的機(jī)會(huì)是1/365,這是0.27%:概率非常低。

不過(guò),如果你在一個(gè)房間里聚集20-30人,那么兩個(gè)分享完全相同生日的人的幾率會(huì)大幅度上升。

pIYBAFr1VVCAWH6bAADeefB-p2Y861.png

生日悖論

這是基于一個(gè)簡(jiǎn)單的概率原理:

假設(shè)你有一個(gè)事件發(fā)生N種不同的可能性,那么你需要N個(gè)隨機(jī)項(xiàng)的平方根,以使它們有50%的碰撞幾率。

因此,將這個(gè)理論應(yīng)用于生日時(shí), 你有365種不同的生日可能性,所以 你只需要Sqrt(365),即約23%,隨機(jī)選擇兩個(gè)人分享生日的可能性為50%。

假設(shè)你有一個(gè)128位哈希,有2 ^ 128種不同的可能性。通過(guò)使用生日悖論,你有50%的幾率在sqrt(2 ^ 128)= 2 ^ 64的情況下打破防碰撞機(jī)制。

正如你所看到的,打破防碰撞要比打破單向性容易得多。所以,如果你使用的是SHA-256這樣的函數(shù),假設(shè)如果H(A)= H(B),那么A = B是可以認(rèn)為成立。

那么,你如何創(chuàng)建一個(gè)抗碰撞的哈希函數(shù)?為此,我們使用一種稱(chēng)為Merkle-Damgard的結(jié)構(gòu)。

什么是Merkle-Damgard結(jié)構(gòu)?

該結(jié)構(gòu)非常簡(jiǎn)單,并且遵循以下原則:給定短消息的防碰撞哈希函數(shù),我們可以為長(zhǎng)消息構(gòu)造防碰撞哈希函數(shù)。

pIYBAFr1VVCAXHEMAABYNu7OqGI267.png

圖片來(lái)源:youtube

記住上面的圖表,注意以下幾點(diǎn):

較大的消息M被分解為m [i]的較小塊。

哈希函數(shù)H由許多較小的哈希函數(shù)“h”組成。

“h”是一個(gè)較小的哈希函數(shù),又稱(chēng)壓縮函數(shù),它接收一小塊消息并返回一個(gè)哈希。

第一個(gè)哈希函數(shù)“h”(在上圖中圈出)接收第一個(gè)消息塊(m [0]),并添加一個(gè)固定值IV并返回哈希值。

哈?,F(xiàn)在被添加到第二個(gè)消息塊并通過(guò)另一個(gè)哈希

函數(shù)h,并且這一直持續(xù)到最后的消息塊,其中填充塊PB也被添加到消息中。

每個(gè)壓縮函數(shù)h的輸出被稱(chēng)為鏈接變量。

填充塊是一系列1和0。在SHA-256算法中,PB長(zhǎng)64位。

哈希壓縮函數(shù)h的輸出是大消息M的輸出。

既然已經(jīng)了解了哈希方法以及加密哈希函數(shù)的特性,讓我們熟悉一些加密貨幣中最常用的加密哈希函數(shù)。

先把幾種加密哈希算法列出來(lái):

MD 5:它產(chǎn)生一個(gè)128位哈希。在~2 ^ 21哈希后,防碰撞機(jī)制被打破。

SHA 1:生成一個(gè)160位哈希。經(jīng)過(guò)2 ^ 61次哈希后,防碰撞機(jī)制被打破。

SHA 256:產(chǎn)生一個(gè)256位哈希。這是目前比特幣正在使用的。

Keccak-256:產(chǎn)生256位哈希,目前由Ethereum使用。

RIPEMD-160:產(chǎn)生160個(gè)輸出,由比特幣腳本(和SHA-256)使用。

CryptoNight:Monero使用的哈希函數(shù)。

安全哈希算法(SHA)

安全哈希算法是由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)發(fā)布的美國(guó)聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPS)的一系列加密哈希函數(shù)。SHA由以下算法組成:

SHA-0:指1993年發(fā)布的名為“SHA”的原始160位哈希函數(shù)。由于未公開(kāi)的“重大缺陷”,并在稍后修訂的版本SHA-1中取而代之,它在出版后不久被撤回。

SHA-1:當(dāng)SHA-0傳送失敗時(shí)被引入。這是一個(gè)160位哈希函數(shù),類(lèi)似于早期的MD5算法。這是由國(guó)家安全局(NSA)設(shè)計(jì)的數(shù)字簽名算法的一部分。然而,人們注意到加密圖形的弱點(diǎn)之后不久就被拋棄了。

SHA-2:現(xiàn)在我們來(lái)看一下哈希函數(shù)中最受歡迎的類(lèi)別之一。它是由NSA使用Merkle-Damgard范例設(shè)計(jì)的。它們是具有不同字長(zhǎng)的兩種哈希函數(shù)族:SHA-256和SHA-512。比特幣使用SHA-256

SHA-3:之前被稱(chēng)為keccak,它在2012年被非NSA設(shè)計(jì)師的公開(kāi)競(jìng)爭(zhēng)之后選中。它支持與SHA-2相同的哈希長(zhǎng)度,其內(nèi)部結(jié)構(gòu)與SHA系列的其他部分有很大不同。以太坊使用這個(gè)哈希函數(shù)。

pIYBAFr1VVCAN4juAAFSO4bbED4693.png

圖片來(lái)源:維基百科

讓我們仔細(xì)看看SHA-256和SHA-3。

SHA-256

SHA-256是一個(gè)SHA-2函數(shù),它使用32個(gè)單詞,而不是使用64位單詞的SHA-512。比特幣在以下兩種情況下使用SHA-256:

采礦。

創(chuàng)建地址。

采礦:

比特幣采礦涉及礦工解決復(fù)雜的計(jì)算難題,以找到一個(gè)塊,然后將其附加到比特幣區(qū)塊鏈。就是我們經(jīng)常稱(chēng)的工作量證明(proof-of-work),它涉及SHA-256哈希函數(shù)的計(jì)算。

創(chuàng)建比特幣地址、;

SHA-256哈希函數(shù)用于哈希比特幣公鑰以生成公共地址。哈希密鑰為身份認(rèn)證增加了一層額外的保護(hù)。此外,哈希地址的長(zhǎng)度僅比存儲(chǔ)更好的比特幣公鑰更短。

SHA-256運(yùn)行實(shí)例:

輸入:Hi

輸出:98EA6E4F216F2FB4B69FFF9B3A44842C38686CA685F3F55DC48C5D3FB1107BE4

SHA-3

如上所述,這種算法以前被稱(chēng)為keccak,并被以太坊使用。它是在non-NSA設(shè)計(jì)師的公開(kāi)競(jìng)賽之后創(chuàng)建的。SHA-3使用“海綿(sponge)機(jī)制”。

什么是海綿機(jī)制?

pIYBAFr1VVGAf6LDAAA4wXYfpAU749.png

圖片來(lái)源:維基百科

海綿功能是具有有限內(nèi)部狀態(tài)的一類(lèi)算法,其獲取任意長(zhǎng)度的輸入比特流并產(chǎn)生預(yù)定長(zhǎng)度的輸出比特流。

在繼續(xù)之前,我們需要定義一些術(shù)語(yǔ):

我們知道,在海綿功能中,數(shù)據(jù)被“吸收”到海綿中,然后將結(jié)果“擠出”。

所以有一個(gè)“吸收”階段和一個(gè)“擠壓”階段。

SHA-3舉例:

輸入:Hi

輸出:154013cb8140c753f0ac358da6110fe237481b26c75c3ddc1b59eaf9dd7b46a0a3aeb2cef164b3c82d65b38a4e26ea9930b7b2cb3c01da4ba331c95e62ccb9c3

RIPEMD-160哈希函數(shù)

RIPEMD是由比利時(shí)魯汶的Hans Dobbertin,Antoon Bosselaers和Bart Preneel在魯汶Katholieke大學(xué)的COSIC研究小組開(kāi)發(fā)的一系列加密哈希函數(shù),并于1996年首次發(fā)布。

雖然RIPEMD基于MD4的設(shè)計(jì)原則,但其性能與SHA-1非常相似。RIPEMD-160是這種哈希函數(shù)的160位版本,通常用于生成比特幣地址。

比特幣公鑰首先通過(guò)SHA-256哈希函數(shù)運(yùn)行,然后通過(guò)RIPEMD-160運(yùn)行。這樣做的原因是因?yàn)?60位的輸出比256位小很多,這有助于節(jié)省空間。

除此之外,RIPEMD-160是唯一性哈希函數(shù),可以產(chǎn)生最短哈希,其唯一性仍然得到充分保證。

pIYBAFr1VVGADtZcAACMTf-K0v4107.png

圖片來(lái)源:維基百科

上面的圖像顯示了RIPEMD-160哈希算法壓縮函數(shù)的子塊快照。

RIPEMD -160實(shí)例:

輸入:Hi

輸出:242485ab6bfd3502bcb3442ea2e211687b8e4d89

CryptoNight哈希函數(shù)

現(xiàn)在我們擁有由Monero使用的CryptoNight哈希函數(shù)。與比特幣不同,Monero希望他們的采礦盡可能地不利于GPU。他們可以做到這一點(diǎn)的唯一方法是讓他們的哈希算法難以記憶。

輸入CryptoNight

CryptoNight是一種內(nèi)存硬件哈希函數(shù)。它被設(shè)計(jì)為在GPU,FPGAASIC體系結(jié)構(gòu)上無(wú)法有效計(jì)算。CryptoNight的工作原理如下:

該算法首先用偽隨機(jī)數(shù)據(jù)初始化一個(gè)大暫存器。

之后,大量的讀/寫(xiě)操作發(fā)生在偽隨機(jī)地址上

包含在便簽簿中。

最后,整個(gè)暫存器被哈希以產(chǎn)生最終值。

下圖顯示了CryptoNight哈希算法的示意圖。

pIYBAFr1VVGAD6DJAACMMAP1v2I460.png

CryptoNight哈希算法的示意圖。

圖片來(lái)源:Dave’s Data

CryptoNight實(shí)例:

輸入:This is a test

輸出:a084f01d1437a09c6985401b60d43554ae105802c5f5d8a9b3253649c0be6605

結(jié)論

加密貨幣中最常用的四種哈希算法基本都在這里了。對(duì)他們的工作方式有一個(gè)基本的認(rèn)知將讓我們更好的理解各類(lèi)數(shù)字貨幣的區(qū)別(比如采礦)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 哈希函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    9432
  • 比特幣
    +關(guān)注

    關(guān)注

    57

    文章

    7002

    瀏覽量

    140128
  • 數(shù)字貨幣
    +關(guān)注

    關(guān)注

    36

    文章

    3135

    瀏覽量

    48810

原文標(biāo)題:全面解析區(qū)塊鏈數(shù)字貨幣4種哈希算法原理與差異

文章出處:【微信號(hào):iotbanks,微信公眾號(hào):iotbanks】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    英偉達(dá)GPU慘遭專(zhuān)業(yè)礦機(jī)碾壓,黃仁勛宣布砍掉加密貨幣業(yè)務(wù)!

    `世界最大的顯卡和圖形芯片制造商英偉達(dá)正式宣布退出加密貨幣業(yè)務(wù)。公司首席財(cái)務(wù)官Colette Kress在聲明中表示:“我們認(rèn)為公司已經(jīng)進(jìn)入一個(gè)正常時(shí)期,公司在預(yù)期的未來(lái)內(nèi)并沒(méi)有加密貨幣
    發(fā)表于 08-24 10:11

    Labview實(shí)現(xiàn)哈希MD5加密

    本帖最后由 周一一一一 于 2019-7-3 15:31 編輯 已封裝哈希MD5加密,調(diào)用子vi即可。
    發(fā)表于 07-03 12:10

    Labview實(shí)現(xiàn)哈希MD5加密

    已封裝哈希MD5加密,調(diào)用子vi即可。網(wǎng)上下載的程序。保存在這里。
    發(fā)表于 11-19 14:30

    單片機(jī)最常用四種燒寫(xiě)方式是什么?

    單片機(jī)最常用四種燒寫(xiě)方式是什么?
    發(fā)表于 09-27 07:53

    哈希加密有什么區(qū)別?

    哈希加密有什么區(qū)別
    發(fā)表于 10-09 06:29

    什么是加密貨幣_加密貨幣劫持暴增的原因及防范

    本文開(kāi)始介紹了加密貨幣的概念,其次介紹了加密貨幣劫持暴增及中國(guó)成勒索軟件威脅重災(zāi)區(qū),最后介紹了加密貨幣
    的頭像 發(fā)表于 04-13 16:25 ?1.4w次閱讀

    加密貨幣投資的五個(gè)風(fēng)險(xiǎn)解析

    隨著加密貨幣的普及,許多會(huì)計(jì)師發(fā)現(xiàn)他們面臨著來(lái)自客戶(hù)和同事提出的關(guān)于如何管理加密貨幣資產(chǎn)、支付和相關(guān)稅務(wù)的問(wèn)題。如果您的客戶(hù)開(kāi)始表現(xiàn)出對(duì)加密
    發(fā)表于 10-18 11:49 ?1479次閱讀

    加密貨幣檢視系統(tǒng)“Algory”有超過(guò)100方式來(lái)分析加密貨幣的火熱度

    即時(shí)創(chuàng)建全自動(dòng)萬(wàn)用篩選器及警示器來(lái)掃描加密貨幣市場(chǎng)。此檢視器會(huì)徹底改變你搜尋及挑選用來(lái)交易的加密貨幣之方法!借由超過(guò)100不同的篩選及警示
    發(fā)表于 10-19 15:02 ?1665次閱讀

    加密貨幣促進(jìn)傳統(tǒng)業(yè)務(wù)發(fā)展的六方式

    創(chuàng)建加密貨幣平臺(tái)是為了完善和促進(jìn)業(yè)務(wù)的引進(jìn),創(chuàng)建加密貨幣的計(jì)劃之一就是繞過(guò)國(guó)家機(jī)構(gòu),方便用貨幣進(jìn)行交易。但是今天,國(guó)家已經(jīng)改變了對(duì)
    發(fā)表于 03-19 15:09 ?866次閱讀

    加密貨幣可分為哪些類(lèi)型

    比特幣是一加密貨幣,乙太幣同樣也是;但二者的屬性不同。加密貨幣可分為二大類(lèi):Coins 與Tokens。被做為「
    發(fā)表于 05-24 11:39 ?8431次閱讀

    如何解決加密貨幣礦業(yè)中面臨的各種困難挑戰(zhàn)

    加密貨幣挖掘是驗(yàn)證各種形式的加密貨幣的交易并將其添加到區(qū)塊鏈數(shù)字總賬的過(guò)程。每組交易在一個(gè)塊中處理。礦工通過(guò)創(chuàng)建與塊中交易關(guān)聯(lián)的哈希值來(lái)保護(hù)
    發(fā)表于 12-17 09:10 ?1515次閱讀

    英偉達(dá)重磅推出加密貨幣挖礦處理器

    據(jù)了解,英偉達(dá)將限制 GeForce RTX 3060 GPU 的哈希率,以降低其對(duì)加密貨幣從業(yè)者的吸引力。RTX 3060 軟件驅(qū)動(dòng)旨在檢測(cè)以太坊加密
    的頭像 發(fā)表于 02-20 11:15 ?2928次閱讀

    基于可編程哈希函數(shù)的HIBE加密方案

    在標(biāo)準(zhǔn)模型下,格上基于分級(jí)身份的加密(HBE)方案的陷門(mén)生成計(jì)算復(fù)雜度較高。針對(duì)該問(wèn)題,提出基于可編程哈希函數(shù)的HBE加密方案。利用MPI
    發(fā)表于 06-03 15:57 ?11次下載

    區(qū)塊哈希競(jìng)猜游戲系統(tǒng)開(kāi)發(fā)加密哈希算法概述

    景的不同,可將哈希算法分為加密哈希與非加密哈希。 ?概述 ?加密
    的頭像 發(fā)表于 06-24 09:51 ?1087次閱讀
    區(qū)塊<b class='flag-5'>哈希</b>競(jìng)猜游戲系統(tǒng)開(kāi)發(fā)<b class='flag-5'>加密</b><b class='flag-5'>哈希</b>算法概述

    四種最常用的環(huán)路補(bǔ)償網(wǎng)絡(luò)對(duì)比

    一文幾乎窮舉了環(huán)路各種補(bǔ)償網(wǎng)絡(luò)的傳遞函數(shù)及其OPA/OTA電路實(shí)現(xiàn),其中PI, TYPE 2, PID, TYPE 3是四種最常用的補(bǔ)償網(wǎng)絡(luò)。實(shí)際應(yīng)用時(shí),PID往往還會(huì)在微分項(xiàng)中再加一個(gè)低通濾波的極點(diǎn)(“不完全微分”),防止高頻
    的頭像 發(fā)表于 03-17 11:46 ?1.3w次閱讀
    <b class='flag-5'>四種</b><b class='flag-5'>最常用</b>的環(huán)路補(bǔ)償網(wǎng)絡(luò)對(duì)比