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

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

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

哈希算法是什么,哈希游戲系統(tǒng)開(kāi)發(fā)方案

開(kāi)發(fā)丨KFZ433 ? 來(lái)源:開(kāi)發(fā)丨KFZ433 ? 作者:開(kāi)發(fā)丨KFZ433 ? 2022-06-14 09:14 ? 次閱讀

什么是哈希/Hash

哈希又稱作“散列”,是一種數(shù)學(xué)計(jì)算機(jī)程序,它接收任何一組任意長(zhǎng)度的輸入信息,通過(guò)哈希算法變換成固定長(zhǎng)度的數(shù)據(jù)指紋輸出形式,如字母和數(shù)字的組合,該輸出就是“哈希值”。

總體而言,哈希算法可理解為一種消息摘要算法,將消息或數(shù)據(jù)壓縮變小并擁有固定格式。由于其單向運(yùn)算具有一定的不可逆性,哈希算法已成為加密算法中一個(gè)構(gòu)成部分,但完整的加密機(jī)制不能僅依賴哈希算法。
在一個(gè)cache系統(tǒng)中,需要實(shí)現(xiàn)一個(gè)域名白名單,域名為下列數(shù)據(jù):

、、sohu.com等

該白名單需要在程序啟動(dòng)時(shí)加載一次,主要執(zhí)行查詢操作。請(qǐng)?jiān)O(shè)計(jì)一個(gè)數(shù)據(jù)結(jié)構(gòu)和相應(yīng)的初始化查詢函數(shù),使得檢索盡可能的快。(不能使用stl::map,等等key-value刑類庫(kù))。

哈希是將任意長(zhǎng)的輸入編程加密的固定長(zhǎng)度輸出的過(guò)程。哈希并不等同于加密方法,因?yàn)闊o(wú)法解密哈希值來(lái)獲取原始數(shù)據(jù)。事實(shí)上哈希是一種單向加密函數(shù)。

With a hash function,data on the Internet can be saved as a fixed length string.One method is SHA-256(secure hash algorithm-256 bits).SHA-256 is the successor of SHA-1,and the output of SHA-1 is 160 bits.

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

//ELF Hash Function

unsigned int ELFHash(char*str)

{

unsigned int hash=0;

unsigned int x=0;

while(*str)

{

hash=(hash<<4)+(*str++);//hash左移4位,當(dāng)前字符ASCII存入hash低四位。

if((x=hash&0xF0000000L)!=0)

{//如果最高的四位不為0,則說(shuō)明字符多余7個(gè),如果不處理,再加第九個(gè)字符時(shí),第一個(gè)字符會(huì)被移出,因此要有如下處理。

//該處理,如果對(duì)于字符串(a-z或者A-Z)就會(huì)僅僅影響5-8位,否則會(huì)影響5-31位,因?yàn)?a href="http://wenjunhu.com/v/tag/1743/" target="_blank">C語(yǔ)言使用的算數(shù)移位

hash^=(x>>24);

//清空28-31位。

hash&=~x;

}

}

//返回一個(gè)符號(hào)位為0的數(shù),即丟棄最高位,以免函數(shù)外產(chǎn)生影響。(我們可以考慮,如果只有字符,符號(hào)位不可能為負(fù))

return(hash&07FFFFFFF);

}

//該散列算法是基于貝爾實(shí)驗(yàn)室的彼得J溫伯格的的研究。

//在Compilers一書(shū)中(原則,技術(shù)和工具),建議采用這個(gè)算法的散列函數(shù)的哈希方法。

unsigned int PJWHash(const char*str)

{

unsigned int BitsInUnignedInt=(unsigned int)(sizeof(unsigned int)*8);

unsigned int ThreeQuarters=(unsigned int)((BitsInUnignedInt*3)/4);

unsigned int6(unsigned int)(BitsInUnignedInt/8);

unsigned int HighBits=(unsigned int)(0xFFFFFFFF)<<(BitsInUnignedInt

-OneEighth);

unsigned int hash=0;

unsigned int test=0;

while(*str)

{

hash=(hash<)+(*str++);<>

if((test=hash&HighBits)!=0)

{

hash=((hash^(test>>ThreeQuarters))&(~HighBits));

}

}

return(hash&0x7FFFFFFF);

}

審核編輯:符乾江

聲明:本文內(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)注

    3

    文章

    4331

    瀏覽量

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

    關(guān)注

    1

    文章

    56

    瀏覽量

    10746
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    診斷系統(tǒng)開(kāi)發(fā)咨詢服務(wù)

    隨著汽車(chē)電控系統(tǒng)復(fù)雜度及消費(fèi)者對(duì)于汽車(chē)售后服務(wù)水平要求的提升,診斷系統(tǒng)開(kāi)發(fā)在整車(chē)開(kāi)發(fā)中的重要度日益突出。經(jīng)過(guò)多年的實(shí)踐,經(jīng)緯恒潤(rùn)積累了豐富的經(jīng)驗(yàn),業(yè)務(wù)涵蓋診斷協(xié)議及功能定義、診斷測(cè)試、整車(chē)下線配置及檢測(cè)(EOL)需求設(shè)計(jì)、整車(chē)售
    的頭像 發(fā)表于 12-18 16:30 ?346次閱讀
    診斷<b class='flag-5'>系統(tǒng)開(kāi)發(fā)</b>咨詢服務(wù)

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

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

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

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

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

    阿丘工業(yè)AI學(xué)堂上線“AI檢測(cè)系統(tǒng)開(kāi)發(fā)實(shí)戰(zhàn)”系列課程,全面涵蓋AI檢測(cè)系統(tǒng)開(kāi)發(fā)從理論到實(shí)踐、從算法選擇到系統(tǒng)落地的各個(gè)關(guān)鍵環(huán)節(jié),助力您快速了解AI檢測(cè)
    的頭像 發(fā)表于 11-16 01:06 ?158次閱讀
    直播報(bào)名丨第3講:如何選擇合適的<b class='flag-5'>算法</b>模塊

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

    Chord算法是一種分布式哈希表(DHT)協(xié)議,它通過(guò)構(gòu)建一個(gè)環(huán)狀結(jié)構(gòu)來(lái)管理節(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

    如何提升SoC的安全性

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

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

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

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

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

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

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

    智慧園區(qū)系統(tǒng)開(kāi)發(fā)對(duì)智慧城市建設(shè)發(fā)展的促進(jìn)

    智慧園區(qū) 系統(tǒng)開(kāi)發(fā)作為數(shù)字化技術(shù)在園區(qū)管理和運(yùn)營(yíng)中的應(yīng)用,不僅有助于提升園區(qū)的智能化水平,還對(duì)整個(gè)智慧城市建設(shè)發(fā)展起到積極推動(dòng)作用。通過(guò)引入先進(jìn)的信息技術(shù)、數(shù)據(jù)分析和智能化系統(tǒng),智慧園區(qū)解決方案
    的頭像 發(fā)表于 09-03 11:21 ?305次閱讀

    恩智浦MBDT加速汽車(chē)電機(jī)控制系統(tǒng)開(kāi)發(fā)

    汽車(chē)電氣化的推進(jìn),也在推動(dòng)汽車(chē)電機(jī)控制應(yīng)用的拓展。因此,找到一種更高效的方案,加速汽車(chē)電機(jī)控制系統(tǒng)開(kāi)發(fā)的進(jìn)程,工程師們對(duì)此總是抱有濃厚的興趣。
    的頭像 發(fā)表于 08-27 09:59 ?999次閱讀

    ARM嵌入式Linux 系統(tǒng)開(kāi)發(fā)從入門(mén)到精通

    ARM嵌入式Linux 系統(tǒng)開(kāi)發(fā)從入門(mén)到精通
    發(fā)表于 03-10 18:44

    珠海盈致科技在MES系統(tǒng)開(kāi)發(fā)方面有哪些優(yōu)勢(shì)?

    、SiMDA-MES智能制造執(zhí)行系統(tǒng)、SiMDA-WMS智能倉(cāng)儲(chǔ)管理系統(tǒng)等工業(yè)系統(tǒng)。 盈致科技的MES系統(tǒng)開(kāi)發(fā)具有以下特點(diǎn)和優(yōu)勢(shì): 聚焦行業(yè)與客戶需求:自成立以來(lái),盈致科技一直聚焦于電
    的頭像 發(fā)表于 01-22 16:29 ?562次閱讀

    康謀方案 | 加速自動(dòng)駕駛系統(tǒng)開(kāi)發(fā)的技術(shù)解決方案

    過(guò)程。 ADTF 能在 Windows、Linux 和 ARM 環(huán)境中運(yùn)行配置。它可以實(shí)時(shí)同步處理多個(gè)傳感器數(shù)據(jù)流。集成的測(cè)試環(huán)境,使得在開(kāi)發(fā)平臺(tái)中編程的駕駛員輔助和安全功能可以很容易地可視化并進(jìn)行虛擬測(cè)試。 ADTF作為自動(dòng)駕駛系統(tǒng)開(kāi)發(fā)的技術(shù)解決
    的頭像 發(fā)表于 01-19 15:57 ?418次閱讀
    康謀<b class='flag-5'>方案</b> | 加速自動(dòng)駕駛<b class='flag-5'>系統(tǒng)開(kāi)發(fā)</b>的技術(shù)解決<b class='flag-5'>方案</b>