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

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

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

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

搭建punk2558 ? 來源:搭建punk2558 ? 作者:搭建punk2558 ? 2022-06-24 09:51 ? 次閱讀

哈希算法(Hash function)又稱散列算法,是一種從任何數(shù)據(jù)(文件、字符等)中創(chuàng)建小的數(shù)字“指紋”的方法。哈希算法只需滿足把一個(gè)散列對象映射到另一個(gè)區(qū)間的需求,因此根據(jù)使用場景的不同,可將哈希算法分為加密哈希與非加密哈希。

概述

加密哈希被認(rèn)為是單向函數(shù),也就是說極難由散列函數(shù)輸出的結(jié)果,回推輸入的數(shù)據(jù)是什么。加密哈希函數(shù)的輸入數(shù)據(jù),通常被稱為消息(message),而它的輸出結(jié)果通常被稱為摘要(digest)。一個(gè)理想的密碼散列函數(shù)通常具有以下三個(gè)特性:

單向性:極難由一個(gè)已知的散列數(shù)值,推算出原始的消息;

唯一性:在不改動(dòng)散列數(shù)值的前提下,修改消息內(nèi)容是不可行的;

抗碰撞性:對于兩個(gè)不同的消息,它不能給與相同的散列數(shù)值。

pYYBAGK1GGuAXaZfAAVNvkilwyM442.png

其中不可碰撞性是指以當(dāng)前的算法與算力水平,哈希碰撞的開銷超出人類可以接受的水平。以SHA-256為例,其哈希數(shù)值可能性約有1077種,而目前人類估計(jì)的宇宙原子總數(shù)約1080。雖然有概率論生日悖論問題存在,N位長度的哈希表可能發(fā)生碰撞測試次數(shù)不是2N次而是只有2N/2次,但仍然是一個(gè)巨大的數(shù)字。

常見的加密哈希函數(shù)有MD5、SHA-1、SHA-2(包含SHA-224、SHA-256、SHA-512等),雖然種類繁多,但除了生成摘要的長度、循環(huán)體內(nèi)容等有一些差異外,算法的基本結(jié)構(gòu)是一致的。下面以SHA-256為例,詳細(xì)介紹加密哈希算法的執(zhí)行步驟。

SHA-256實(shí)現(xiàn)原理

常量初始化

SHA-256算法中用到了8個(gè)哈希初值以及64個(gè)哈希常量,其中,8個(gè)哈希初值是對自然數(shù)前8個(gè)質(zhì)數(shù)(2,3,5,7,11,13,17,19)的平方根的小數(shù)部分取前32 bit:

64個(gè)哈希常量是對自然數(shù)中前64個(gè)質(zhì)數(shù)的立方根的小數(shù)部分取前32 bit,標(biāo)記為k[t]:

附加長度值

SHA-256用一個(gè)64位的數(shù)據(jù)來表示原始消息的長度,而在信息處理的過程中給需要將消息分解成512bit大小的塊,因此補(bǔ)位后的消息長度應(yīng)該是512的整數(shù)倍。附加長度值分為兩個(gè)步驟:

第一個(gè)bit位補(bǔ)1,然后都補(bǔ)0,直到長度滿足對512取模后余數(shù)是448,如果長度已經(jīng)滿足對512取模后余數(shù)是448,需要填充512個(gè)bit;

附加長度為64bit的長度值。

為什么不可碰撞性對加密哈希算法如此重要?從SHA-256算法的實(shí)現(xiàn)步驟可以看出,加密哈希的逆向計(jì)算幾乎是不可能的,暴力破解法的成本也太高,因此對加密哈希算法所謂的攻擊實(shí)際是利用哈希碰撞為突破口進(jìn)行數(shù)據(jù)偽造。以常見的保存用戶密碼為例,如果是明文存儲(chǔ),一旦發(fā)生數(shù)據(jù)泄露,那么所有的賬戶都會(huì)被盜用,因此常用下面一些方法進(jìn)行Hash加密:

Hash加密:單純對密碼進(jìn)行Hash加密無法保證密碼的安全性,因?yàn)橛脩裘艽a通常是短字符,無論采用哪種加密算法,都可以利用暴力破解或彩虹表攻擊破解。

Hash加鹽:在原消息上添加隨機(jī)鹽再進(jìn)行哈希加密,并將鹽與密碼保存起來,以便下次登陸驗(yàn)證,添加隨機(jī)鹽增加了彩虹表破解的難度,促使攻擊者放棄破解。但是如果對密碼進(jìn)行不安全的散列函數(shù)(MD5)計(jì)算,數(shù)據(jù)庫泄露后,攻擊者可以根據(jù)散列值找出碰撞的消息,不管這個(gè)消息是否與密碼相同,都可以通過驗(yàn)證。

專用哈希函數(shù)加密:使用bcrypt等專門用來密碼加密的哈希函數(shù)進(jìn)行加密,這類函數(shù)通常運(yùn)算時(shí)間較長,大大增加了攻擊成本。

密碼加密不單單是一個(gè)技術(shù)問題,對于攻擊者來說,如果破解成本大于收益成本,即使攻破了加密的密碼也是無意義的。而那些被證明可以產(chǎn)生散列碰撞的Hash函數(shù),攻擊它們的成本較低,隨著算法的改進(jìn)與硬件水平的提升,破解的成本也不斷降低。從安全的角度考慮,應(yīng)該及時(shí)更換不安全的哈希算法。

加密哈希的應(yīng)用比較廣泛,筆者詳細(xì)地學(xué)習(xí)哈希算法的實(shí)現(xiàn)原理,也是為了更好地理解它們使用與被攻擊的方式,而不僅僅是在編程中調(diào)一個(gè)函數(shù)庫。在這之前以為密碼學(xué)的知識比較晦澀難懂,實(shí)際上拋開中間的數(shù)學(xué)運(yùn)算,整體的邏輯十分清晰,基本結(jié)構(gòu)很容易理解。

審核編輯:符乾江

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

    關(guān)注

    8

    文章

    7239

    瀏覽量

    90990
  • 哈希算法
    +關(guān)注

    關(guān)注

    1

    文章

    56

    瀏覽量

    10920
收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    深入解析ECC256橢圓曲線加密算法

    點(diǎn)擊藍(lán)字關(guān)注我們一、加密算法概述數(shù)據(jù)加密的基本過程就是對原來為明文的文件或數(shù)據(jù)按某種算法進(jìn)行處理,使其成為不可讀的一段代碼為“密文”,使其只能在輸入相應(yīng)的密鑰之后才能顯示出原容,通過這
    的頭像 發(fā)表于 12-26 16:32 ?1603次閱讀
    深入解析ECC256橢圓曲線<b class='flag-5'>加密算法</b>

    【RA-Eco-RA4E2-64PIN-V1.0開發(fā)板試用】RA4E2使用之SHA256加密解密

    和解密算法來進(jìn)行解釋和說明數(shù)據(jù)加密和解密操作的。 SHA-256是一種哈希函數(shù),屬于SHA-2(Secure Hash Algorithm 2)家族的一部分。它是由美國國家安全局(NSA)設(shè)計(jì),并由
    發(fā)表于 12-23 18:18

    加密算法在網(wǎng)絡(luò)安全中扮演什么角色?

    : 通過哈希函數(shù)和消息認(rèn)證碼(MAC),加密算法可以檢測數(shù)據(jù)在傳輸過程中是否被篡改,確保數(shù)據(jù)的完整性。 提供身份驗(yàn)證 : 非對稱加密算法和數(shù)字簽名技術(shù)可以驗(yàn)證通信雙方的身份,防止身份冒充攻擊。 實(shí)現(xiàn)數(shù)據(jù)簽名 : 數(shù)字簽名使用非
    的頭像 發(fā)表于 12-17 16:00 ?414次閱讀

    加密算法的選擇對于加密安全有多重要?

    加密算法的選擇對于加密安全至關(guān)重要,因?yàn)樗苯佑绊懙綌?shù)據(jù)保護(hù)的有效性和可靠性。以下是幾個(gè)關(guān)鍵點(diǎn)來說明加密算法選擇的重要性: 加密強(qiáng)度: 加密算法
    的頭像 發(fā)表于 12-17 15:59 ?430次閱讀

    嵌入式系統(tǒng)開發(fā)中的測試方法 嵌入式系統(tǒng)開發(fā)與AI結(jié)合應(yīng)用

    嵌入式系統(tǒng)開發(fā)中的測試方法 嵌入式系統(tǒng)開發(fā)是一個(gè)復(fù)雜的過程,涉及到硬件和軟件的緊密結(jié)合。測試是確保系統(tǒng)可靠性和性能的關(guān)鍵步驟。以下是一些常用的測試方法: 單元測試 : 單元測試是針對軟件中最小的可
    的頭像 發(fā)表于 12-09 10:22 ?1172次閱讀

    嵌入式系統(tǒng)開發(fā)與硬件的關(guān)系 嵌入式系統(tǒng)開發(fā)常見問題解決

    嵌入式系統(tǒng)開發(fā)與硬件的關(guān)系 嵌入式系統(tǒng)是專為特定應(yīng)用設(shè)計(jì)的計(jì)算機(jī)系統(tǒng),它們通常嵌入在所控制的設(shè)備中。這些系統(tǒng)的關(guān)鍵特點(diǎn)是它們與硬件的緊密集成,這意味著軟件必須為特定的硬件平臺量身定制。
    的頭像 發(fā)表于 12-09 09:38 ?828次閱讀

    華納云:加密算法在保護(hù)網(wǎng)絡(luò)安全中扮演什么角色

    。只有具有正確密鑰的接收方才能解密數(shù)據(jù)并還原其原始形式。 數(shù)據(jù)完整性:加密算法可以用于計(jì)算和驗(yàn)證數(shù)據(jù)的完整性。通過使用哈希函數(shù)或數(shù)字簽名算法,發(fā)送方可以生成數(shù)據(jù)的摘要或簽名,并將其附加到數(shù)據(jù)上。接收方可以使用相
    的頭像 發(fā)表于 12-06 15:22 ?501次閱讀

    直播報(bào)名丨第4講:AI檢測系統(tǒng)落地工具詳解

    AI檢測實(shí)戰(zhàn)技能,實(shí)現(xiàn)職業(yè)發(fā)展的新跨越。本系列課程共分為4講:第1講AI檢測系統(tǒng)開發(fā)流程概述第2講熱門AI檢測案例解析第3講如何選擇合適的算法模塊第4講AI檢測系
    的頭像 發(fā)表于 11-23 01:05 ?341次閱讀
    直播報(bào)名丨第4講:AI檢測<b class='flag-5'>系統(tǒng)</b>落地工具詳解

    直播報(bào)名丨第3講:如何選擇合適的算法模塊

    AI檢測實(shí)戰(zhàn)技能,實(shí)現(xiàn)職業(yè)發(fā)展的新跨越。本系列課程共分為4講:第1講AI檢測系統(tǒng)開發(fā)流程概述第2講熱門AI檢測案例解析第3講如何選擇合適的算法模塊第4講AI檢測系
    的頭像 發(fā)表于 11-16 01:06 ?340次閱讀
    直播報(bào)名丨第3講:如何選擇合適的<b class='flag-5'>算法</b>模塊

    華納云:Chord算法如何管理節(jié)點(diǎn)間的聯(lián)系?

    Chord算法是一種分布式哈希表(DHT)協(xié)議,它通過構(gòu)建一個(gè)環(huán)狀結(jié)構(gòu)來管理節(jié)點(diǎn)間的聯(lián)系。以下是Chord算法如何管理節(jié)點(diǎn)間聯(lián)系的具體方式: 環(huán)狀結(jié)構(gòu): Chord算法將所有節(jié)點(diǎn)和鍵
    發(fā)表于 11-08 16:03

    智能系統(tǒng)的安全性分析

    )和非對稱加密(如RSA)等技術(shù),確保數(shù)據(jù)在存儲(chǔ)和傳輸過程中的機(jī)密性。 加密算法應(yīng)經(jīng)過廣泛驗(yàn)證和測試,以確保其安全性和可靠性。 數(shù)據(jù)完整性 : 使用哈希算法(如SHA-256)和消息認(rèn)
    的頭像 發(fā)表于 10-29 09:56 ?652次閱讀

    什么是默克爾樹(Merkle Tree)?如何計(jì)算默克爾根?

    01 默克爾樹的概念 默克爾樹(Merkle Tree)是一種特殊的二叉樹,它的每個(gè)節(jié)點(diǎn)都存儲(chǔ)了一個(gè)數(shù)據(jù)塊的哈希值。哈希值是一種可以將任意長度的數(shù)據(jù)轉(zhuǎn)換為固定長度的字符串的算法,它具有唯一性和不可
    的頭像 發(fā)表于 09-30 18:22 ?1998次閱讀
    什么是默克爾樹(Merkle Tree)?如何計(jì)算默克爾根?

    開源物聯(lián)網(wǎng)技術(shù)--哈希算法MD5加密功能技術(shù)分享

    MD5(Message-Digest Algorithm 5)是一種常用的哈希函數(shù),通常用于數(shù)據(jù)加密和安全校驗(yàn)等場合。MD5 算法可以將任意長度的消息輸入計(jì)算出一個(gè)固定長度的摘要,其生成的摘要具有
    的頭像 發(fā)表于 09-21 09:57 ?2524次閱讀
    開源物聯(lián)網(wǎng)技術(shù)--<b class='flag-5'>哈希</b><b class='flag-5'>算法</b>MD5<b class='flag-5'>加密</b>功能技術(shù)分享

    C加密算法的實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《C加密算法的實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 09-20 11:10 ?1次下載
    C<b class='flag-5'>加密算法</b>的實(shí)現(xiàn)

    SiRider S1芯擎工業(yè)開發(fā)板測評+1.防止黑客入侵通信監(jiān)控系統(tǒng)(PSA)

    能望洋興嘆,咱們的系統(tǒng)也就安全無憂啦! 哈哈,好的!接下來讓我們用一場別開生面的“冒險(xiǎn)”來解釋如何在 SiRider S1芯擎工業(yè)開發(fā)板中使用哈希算法,就像你是位勇敢的探險(xiǎn)家,而
    發(fā)表于 09-08 21:58

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品