<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 理解數字簽名、加密通信的關(guān)鍵:哈希算法

理解數字簽名、加密通信的關(guān)鍵:哈希算法

作者: 時(shí)間:2019-01-09 來(lái)源:網(wǎng)絡(luò ) 收藏

  哈希是密碼學(xué)的基礎,理解哈希是理解數字簽名和加密通信等技術(shù)的必要前提。

本文引用地址:http://dyxdggzs.com/article/201901/396514.htm

  哈希,英文是 hash ,本來(lái)意思是”切碎并攪拌“,有一種食物就叫 Hash ,就是把食材切碎并攪拌一下做成的。哈希函數的運算結果就是哈希值,通常簡(jiǎn)稱(chēng)為哈希。哈希函數有時(shí)候也翻譯做散列函數。

  


  根據維基百科的定義,哈希函數要做的事情是給一個(gè)任意大小的數據生成出一個(gè)固定長(cháng)度的數據,作為它的映射。所謂映射就是一一對應。一個(gè)可靠的要滿(mǎn)足三點(diǎn)。

  第一是安全,給定數據 M 容易算出哈希值 X ,而給定 X 不能算出 M ,或者說(shuō)應該是一個(gè)單向算法。第二是獨一無(wú)二,兩個(gè)不同的數據,要擁有不相同的哈希。第三是長(cháng)度固定,給定一種,不管輸入是多大的數據,輸出長(cháng)度都是固定的。

  但是仔細想一下,如果哈希的長(cháng)度是固定的,也就是取值范圍是有限的,而輸入數據的取值范圍是無(wú)限的,所以總會(huì )找到兩個(gè)不同的輸入擁有相同的哈希。所以,哈希函數的安全性肯定是個(gè)相對概念。如果出現了兩個(gè)不同輸入有相同輸出的情況,就叫碰撞,collision 。不同的哈希算法,哈希位數越多,也就基本意味著(zhù)安全級別越高,或者說(shuō)它的”抗碰撞性“就越好。

  再來(lái)說(shuō)說(shuō)哈希函數的主要作用。哈希的獨一無(wú)二性,保證了如果數據在存儲或者傳輸過(guò)程中有絲毫損壞,那么它的哈希就會(huì )變。哈希函數的最常見(jiàn)的一個(gè)作用就是進(jìn)行完整性校驗( Integrity Check ),完整的意思是數據無(wú)損壞。哈希有很多不同的稱(chēng)呼,有時(shí)候叫 Digest 摘要,有時(shí)候叫 Checksum 校驗值,有時(shí)候叫 Fingerprint 指紋,其實(shí)說(shuō)的意思差不多,也就是說(shuō)哈??梢杂脕?lái)代表數據本身。

  例如朋友給我傳遞一份數據,傳完之后,我有一份,他手里也有一份,如果兩份數據的哈希值是一樣的,那么這兩份數據的內容就是一樣的,或者說(shuō)可以認為傳遞過(guò)程中數據沒(méi)有損壞,我手里拿到的數據是完整的。

  所以說(shuō),哈希函數的基本作用就是給大數據算出一個(gè)摘要性的長(cháng)度固定的字符串,也就是所謂的哈希。哈希的作用主要是進(jìn)行完整性校驗。

  哈希算法的分類(lèi)

  下一步我們把哈希函數分類(lèi),更細致的聊聊哈希算法的特點(diǎn)。首先說(shuō)哈希算法有很多種,例如 md5 ,SHA256 等等,但是它們總體上可以分為兩大類(lèi),一類(lèi)是普通哈希,另外一類(lèi)是加密哈希,cryptographic hash function 。

  業(yè)界可以找到的哈希算法是有很多種的。我們可以大致按照輸出的哈希的長(cháng)度來(lái)聊,雖然哈希算法的安全性也不單單是跟哈希長(cháng)度有關(guān),但是一般哈希值越長(cháng)也就是越安全。

  例如 CRC-32 的輸出是32 bit,也就是32位的二進(jìn)制數,表示成十六進(jìn)制就是8位。MD5 算法的哈希是32位16進(jìn)制數,比較常見(jiàn)。SHA-256是256個(gè) Bit ,十六進(jìn)制表示就是64位。這些算法可以分成普通哈希和加密哈希算法,兩種算法之間沒(méi)有特別明顯的區別。例如本來(lái) MD5 就是設計出來(lái)做加密哈希的,但是后來(lái)由于計算機的發(fā)展 MD5 出現碰撞的可能性就很大了,所以目前 MD5 只能當普通哈希用,用來(lái)做數據校驗。

  加密哈希跟普通哈希的區別就是安全性,一般原則是只要一種哈希算法出現過(guò)碰撞,就會(huì )不被推薦成為加密哈希了,只有安全度高的哈希算法才能用作加密哈希。

  同時(shí)加密哈希其實(shí)也能當普通哈希來(lái)用,Git 版本控制工具就是用 SHA-1 這個(gè)加密哈希算法來(lái)做完整性校驗的。一般來(lái)講越安全的哈希算法,處理速度也就越慢,所以并不是所有的場(chǎng)合都適合用加密哈希來(lái)替代普通哈希。

  


  在密碼學(xué)領(lǐng)域,有兩個(gè)算法都是把數據做輸入,而輸出是一段誰(shuí)也看不懂的數據。其中一個(gè)就是哈希算法,另外一個(gè)是加密算法。注意,哈希算法和加密算法是完全不同的。

  首先哈希算法的輸出長(cháng)度是固定的,而加密算法的輸出長(cháng)度是跟數據本身長(cháng)度直接相關(guān)的,第二,哈希是不可以逆向運算出數據的,而加密算法的輸出是要能夠逆向運算出數據的。關(guān)于加密算法,我們這里就不展開(kāi)聊了。

  這里主要是強調加密哈希算法只是被用在加密過(guò)程中,但是它本身不是加密算法。

  總之,哈希算法有很多種,長(cháng)度越長(cháng)的算法基本認為越安全。安全度低的哈希算法被認為是普通哈希算法,主要用來(lái)做完整性校驗。安全度高的被稱(chēng)為加密哈希算法,會(huì )被用在加密算法中。所謂的高低都是相對概念,例如 MD5 曾經(jīng)屬于加密哈希,但是目前只能用來(lái)做安全校驗了。而從2017年開(kāi)始,SHA-1 算法生成的加密證書(shū)也會(huì )被各大瀏覽器拒絕了。目前最流行的加密算法是 SHA-2 ,但是跟 SHA-1 不同,SHA-2 不是一種算法,而是一系列算法的統稱(chēng),其中就包括咱們之前提過(guò)的 SHA-256 。

  實(shí)用例子

  說(shuō)了這么多基礎知識,最后一部分咱們聊聊哈希在現實(shí)中的應用。

  首先一個(gè)場(chǎng)景是網(wǎng)站注冊。當我們提交用戶(hù)名密碼的時(shí)候,用戶(hù)名被會(huì )直接保存到網(wǎng)站的數據庫中,但是密碼卻不是直接保存的,而是先把密碼轉換成哈希,保存到數據庫中的其實(shí)是哈希。所以,即使是公司后臺管理人員,也拿不到用戶(hù)的密碼。這樣,如果萬(wàn)一公司數據庫泄露了,用戶(hù)的密碼依然是安全的。而當用戶(hù)自己登錄網(wǎng)站的時(shí)候,輸入密碼提交到服務(wù)器,服務(wù)器上進(jìn)行相同的哈希運算,因為輸入數據沒(méi)變,所以哈希也不會(huì )變,登錄也就成功了。

  另外一個(gè)場(chǎng)景是區塊鏈和加密貨幣中。比特幣地址生成的時(shí)候,就用到了 SHA-256 算法,POW 也就是工作量證明,用的也是這個(gè)算法。

  基本上凡是涉及到密碼學(xué)的地方,都會(huì )或多或少的用到哈希函數。

  總結

  關(guān)于哈希和哈希函數,我們就聊到這里,下面來(lái)總結幾句。

  哈希的基本作用就是提供一個(gè)數據的摘要或者指紋,通常的使用場(chǎng)景就是完整性校驗。哈希算法有很多種,一般來(lái)講哈希越長(cháng)的算法,安全性也就越高,安全度足夠高的哈希,或者說(shuō)沒(méi)有任何人能夠成功實(shí)現碰撞的哈希,才有資格被考慮用在加密場(chǎng)合,而這類(lèi)的哈希算法也被叫做加密哈希算法。

  實(shí)際中常見(jiàn)的哈希算法有 MD5 ,SHA-1 ,和 SHA-256 等等,其中 MD5 通常用來(lái)進(jìn)行數據校驗,SHA-1 曾經(jīng)是加密哈希算法,但是目前已經(jīng)被除名,也只能做為一種安全度更高的校驗算法了。SHA-256 依然是廣泛使用的加密哈希算法,在比特幣生成地址以及 POW 工作量證明算法中都會(huì )用到。



關(guān)鍵詞: 哈希算法

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>