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

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

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

哈希是什么,常見的哈希算法有哪些

18125913365 ? 來源:18125913365 ? 作者:18125913365 ? 2022-06-23 14:57 ? 次閱讀

什么是哈希?

哈希又稱作“散列”,是一種數(shù)學(xué)計算機程序,它接收任何一組任意長度的輸入信息,通過哈希算法變換成固定長度的數(shù)據(jù)指紋輸出形式,如字母和數(shù)字的組合,該輸出就是“哈希值”??傮w而言,哈希算法可理解為一種消息摘要算法,將消息或數(shù)據(jù)壓縮變小并擁有固定格式。由于其單向運算具有一定的不可逆性,哈希算法已成為加密算法中一個構(gòu)成部分,但完整的加密機制不能僅依賴哈希算法。在一個cache系統(tǒng)中,需要實現(xiàn)一個域名白名單,域名為下列數(shù)據(jù):、、sohu.com 等該白名單需要在程序啟動時加載一次,主要執(zhí)行查詢操作。請設(shè)計一個數(shù)據(jù)結(jié)構(gòu)和相應(yīng)的初始化查詢函數(shù),使得檢索盡可能的快。(不能使用stl::map,等等key-value刑類庫)。

我們可以看到,該題目提出了字符串的快速查找,并且只加載一次。使用Hash比較好。

我們可能首先就是想到使用 C++ 中的 MAP ,題目中給出了不允許使用MAP,那么肯定第二選擇就是使用Berkeley DB (DB)這種的文件數(shù)據(jù)庫了,但是題目中明顯提出不允許使用key-value類型庫。

我們思考Berkeley DB (DB)的原理可以曉得,這個就是一個Hash的過程,map其實也是hash的思想。

自己設(shè)計一個hash系統(tǒng)咯。沖突處理…

字符串hash可能就想到使用ELFhash算法,主要分析下ELFHash算法。

ELFhash函數(shù)在UNIX系統(tǒng)V 版本4中的“可執(zhí)行鏈接格式”( Executable and Linking Format,即ELF )中會用到,ELF文件格式用于存儲可執(zhí)行文件與目標文件。ELFhash函數(shù)是對字符串的散列。它對于長字符串和短字符串都很有效,字符串中每個字符都有同樣的作用,它巧妙地對字符的ASCII編碼值進行計算,ELFhash函數(shù)對于能夠比較均勻地把字符串分布在散列表中。

這些函數(shù)使用位運算使得每一個字符都對最后的函數(shù)值產(chǎn)生影響。

常見哈希算法

目前常見的 Hash 算法包括國際上的 Message Digest( MD) 系列和 Secure Hash Algorithm( SHA) 系列算法,以及國內(nèi)的 SM3 算法。

其中,SHA 256 是 SHA 系列算法之一,由美國國安局設(shè)計、美國國家標準與技術(shù)研究院發(fā)布的一套哈希算法,由于其摘要長度為 256bits,故稱 SHA 256。SHA 256也是保護數(shù)字信息的最安全的方法之一。

例如計算

“hello blockchain world, this is yeasy@github”的SHA-256 Hash值,

得到的結(jié)果將是

“db8305d71a9f2f90a3e118a9b49a4c381d2b80cf7bcef81930f30ab1832a3c90”。

對于某個文件,無需查看原始內(nèi)容,只要其 SHA-256 Hash 計算后結(jié)果相同,則說明該文件內(nèi)容極大概率就是一樣的。

審核編輯:符乾江

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

    關(guān)注

    7

    文章

    3800

    瀏覽量

    64402
  • 源碼
    +關(guān)注

    關(guān)注

    8

    文章

    641

    瀏覽量

    29216
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2108

    瀏覽量

    73657
收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

    常見的加密算法哪些?它們各自的優(yōu)勢是什么?

    常見的加密算法及其優(yōu)勢如下: AES(Advanced Encryption Standard): AES是一種對稱加密算法,采用分組密碼體制,支持128位、192位和256位密鑰長度。AES的優(yōu)勢
    的頭像 發(fā)表于 12-17 15:57 ?107次閱讀

    常見的lvs負載均衡算法

    常見的lvs負載均衡算法包括輪詢(RR)、加權(quán)輪詢(WRR)、最小連接(LC)、加權(quán)最小連接(WLC)、基于局部性的最少鏈接(LBLC)、帶復(fù)制的LBLC(LBLCR)、目標地址散列(DH)、源地址
    的頭像 發(fā)表于 12-12 13:50 ?87次閱讀

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

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

    如何提升SoC的安全性

    進行數(shù)字簽名。Bootloader在啟動時使用存儲在芯片中的公鑰驗證簽名,以確保固件的真實性和完整性。通過哈希算法(如SHA-256)計算固件的哈希值,并與預(yù)先存儲的正確哈希值進行比較
    的頭像 發(fā)表于 10-21 14:19 ?232次閱讀

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

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

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

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

    艾體寶洞察 一文讀懂最新密碼存儲方法,揭秘密碼存儲常見誤區(qū)!

    本篇文章將引入并介紹密碼存儲中的基石,關(guān)于密碼哈希、鹽加密(Salting)、密鑰派生函數(shù)(KDF)的原理及其應(yīng)用,揭示密碼存儲中的常見誤區(qū),并分享一系列安全實踐。
    的頭像 發(fā)表于 09-14 17:37 ?361次閱讀
    艾體寶洞察 一文讀懂最新密碼存儲方法,揭秘密碼存儲<b class='flag-5'>常見</b>誤區(qū)!

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

    說到AI,SiRider S1可不含糊。它搭載了安謀科技的“周易”NPU,這可是專為神經(jīng)網(wǎng)絡(luò)設(shè)計的“大腦”。了它,SiRider S1就像擁有了超能力,能輕松應(yīng)對各種復(fù)雜的人工智能算法。無論是
    發(fā)表于 09-08 21:58

    ESP8266如何避免固件損壞?

    我們需要在固件下載中采用強大的固件升級方法,我們知道在固件下載中有一個示例。 例子/at_upgrade.c 對于該示例,我們一個問題: 如何避免損壞的bin文件? 因為如果惡意用戶將損壞
    發(fā)表于 07-19 06:00

    運動控制算法哪些

    運動控制算法是機器人學(xué)和自動化領(lǐng)域中的核心技術(shù)之一,它們負責(zé)規(guī)劃和執(zhí)行機器人或自動化設(shè)備的精確運動。以下是一些常見的運動控制算法,以及它們的基本原理和應(yīng)用場景。 PID控制算法
    的頭像 發(fā)表于 06-13 09:17 ?2550次閱讀

    基于FPGA的常見的圖像算法模塊總結(jié)

    意在給大家補充一下基于FPGA的圖像算法基礎(chǔ),于是講解了一下常見的圖像算法模塊,經(jīng)過個人的總結(jié),將知識點分布如下所示。
    的頭像 發(fā)表于 04-28 11:45 ?602次閱讀
    基于FPGA的<b class='flag-5'>常見</b>的圖像<b class='flag-5'>算法</b>模塊總結(jié)

    如何在IFX ConfigWizard中更改文件夾/文件夾結(jié)構(gòu)?

    使用的哈希算法。 (不是我們的工作) 如示例所示,我們將 ConfigWizard 與 IAR Workbench 集成在一起。 任何改變結(jié)構(gòu)的嘗試都會導(dǎo)致在此過程中出現(xiàn)故障... 你能告訴我們清理存儲庫的方法嗎?
    發(fā)表于 01-22 06:26

    刷電機常見故障哪些

    刷電機常見故障哪些 刷電機是一種常見的電動機類型,廣泛應(yīng)用于各種電器和機械設(shè)備中。然而,由于長時間運行或其他原因,
    的頭像 發(fā)表于 01-04 11:26 ?2072次閱讀