0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

哈希算法是什么,哈希游戏系统开发方案

開發丨KFZ433 来源:開發丨KFZ433 作者:開發丨KFZ433 2022-06-14 09:14 次阅读

什么是哈希/Hash

哈希又称作“散列”,是一种数学计算机程序,它接收任何一组任意长度的输入信息,通过哈希算法变换成固定长度的数据指纹输出形式,如字母和数字的组合,该输出就是“哈希值”。

总体而言,哈希算法可理解为一种消息摘要算法,将消息或数据压缩变小并拥有固定格式。由于其单向运算具有一定的不可逆性,哈希算法已成为加密算法中一个构成部分,但完整的加密机制不能仅依赖哈希算法。
在一个cache系统中,需要实现一个域名白名单,域名为下列数据:

、、sohu.com等

该白名单需要在程序启动时加载一次,主要执行查询操作。请设计一个数据结构和相应的初始化查询函数,使得检索尽可能的快。(不能使用stl::map,等等key-value刑类库)。

哈希是将任意长的输入编程加密的固定长度输出的过程。哈希并不等同于加密方法,因为无法解密哈希值来获取原始数据。事实上哈希是一种单向加密函数。

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.

这些函数使用位运算使得每一个字符都对最后的函数值产生影响。

//ELF Hash Function

unsigned int ELFHash(char*str)

{

unsigned int hash=0;

unsigned int x=0;

while(*str)

{

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

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

{//如果最高的四位不为0,则说明字符多余7个,如果不处理,再加第九个字符时,第一个字符会被移出,因此要有如下处理。

//该处理,如果对于字符串(a-z或者A-Z)就会仅仅影响5-8位,否则会影响5-31位,因为C语言使用的算数移位

hash^=(x>>24);

//清空28-31位。

hash&=~x;

}

}

//返回一个符号位为0的数,即丢弃最高位,以免函数外产生影响。(我们可以考虑,如果只有字符,符号位不可能为负)

return(hash&07FFFFFFF);

}

//该散列算法是基于贝尔实验室的彼得J温伯格的的研究。

//在Compilers一书中(原则,技术和工具),建议采用这个算法的散列函数的哈希方法。

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);

}

审核编辑:符乾江

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4329

    浏览量

    62586
  • 哈希算法
    +关注

    关注

    1

    文章

    56

    浏览量

    10745
收藏 人收藏

    评论

    相关推荐

    【RA-Eco-RA4E2-64PIN-V1.0开发板试用】RA4E2使用之SHA256加密解密

    和解密算法来进行解释和说明数据加密和解密操作的。 SHA-256是一种哈希函数,属于SHA-2(Secure Hash Algorithm 2)家族的一部分。它是由美国国家安全局(NSA)设计,并由
    发表于 12-23 18:18

    诊断系统开发咨询服务

    随着汽车电控系统复杂度及消费者对于汽车售后服务水平要求的提升,诊断系统开发在整车开发中的重要度日益突出。经过多年的实践,经纬恒润积累了丰富的经验,业务涵盖诊断协议及功能定义、诊断测试、整车下线配置及检测(EOL)需求设计、整车售
    的头像 发表于 12-18 16:30 333次阅读
    诊断<b class='flag-5'>系统开发</b>咨询服务

    嵌入式系统开发中的测试方法 嵌入式系统开发与AI结合应用

    嵌入式系统开发中的测试方法 嵌入式系统开发是一个复杂的过程,涉及到硬件和软件的紧密结合。测试是确保系统可靠性和性能的关键步骤。以下是一些常用的测试方法: 单元测试 : 单元测试是针对软件中最小的可
    的头像 发表于 12-09 10:22 332次阅读

    嵌入式系统开发与硬件的关系 嵌入式系统开发常见问题解决

    嵌入式系统开发与硬件的关系 嵌入式系统是专为特定应用设计的计算机系统,它们通常嵌入在所控制的设备中。这些系统的关键特点是它们与硬件的紧密集成,这意味着软件必须为特定的硬件平台量身定制。
    的头像 发表于 12-09 09:38 242次阅读

    直播报名丨第3讲:如何选择合适的算法模块

    阿丘工业AI学堂上线“AI检测系统开发实战”系列课程,全面涵盖AI检测系统开发从理论到实践、从算法选择到系统落地的各个关键环节,助力您快速了解AI检测
    的头像 发表于 11-16 01:06 153次阅读
    直播报名丨第3讲:如何选择合适的<b class='flag-5'>算法</b>模块

    华纳云:Chord算法如何管理节点间的联系?

    Chord算法是一种分布式哈希表(DHT)协议,它通过构建一个环状结构来管理节点间的联系。以下是Chord算法如何管理节点间联系的具体方式: 环状结构: Chord算法将所有节点和键
    发表于 11-08 16:03

    如何提升SoC的安全性

    进行数字签名。Bootloader在启动时使用存储在芯片中的公钥验证签名,以确保固件的真实性和完整性。通过哈希算法(如SHA-256)计算固件的哈希值,并与预先存储的正确哈希值进行比较
    的头像 发表于 10-21 14:19 225次阅读

    什么是默克尔树(Merkle Tree)?如何计算默克尔根?

    01 默克尔树的概念 默克尔树(Merkle Tree)是一种特殊的二叉树,它的每个节点都存储了一个数据块的哈希值。哈希值是一种可以将任意长度的数据转换为固定长度的字符串的算法,它具有唯一性和不可
    的头像 发表于 09-30 18:22 859次阅读
    什么是默克尔树(Merkle Tree)?如何计算默克尔根?

    开源物联网技术--哈希算法MD5加密功能技术分享

    MD5(Message-Digest Algorithm 5)是一种常用的哈希函数,通常用于数据加密和安全校验等场合。MD5 算法可以将任意长度的消息输入计算出一个固定长度的摘要,其生成的摘要具有
    的头像 发表于 09-21 09:57 1672次阅读
    开源物联网技术--<b class='flag-5'>哈希</b><b class='flag-5'>算法</b>MD5加密功能技术分享

    SiRider S1芯擎工业开发板测评+1.防止黑客入侵通信监控系统(PSA)

    能望洋兴叹,咱们的系统也就安全无忧啦! 哈哈,好的!接下来让我们用一场别开生面的“冒险”来解释如何在 SiRider S1芯擎工业开发板中使用哈希算法,就像你是位勇敢的探险家,而
    发表于 09-08 21:58

    智慧园区系统开发对智慧城市建设发展的促进

    智慧园区 系统开发作为数字化技术在园区管理和运营中的应用,不仅有助于提升园区的智能化水平,还对整个智慧城市建设发展起到积极推动作用。通过引入先进的信息技术、数据分析和智能化系统,智慧园区解决方案
    的头像 发表于 09-03 11:21 299次阅读

    恩智浦MBDT加速汽车电机控制系统开发

    汽车电气化的推进,也在推动汽车电机控制应用的拓展。因此,找到一种更高效的方案,加速汽车电机控制系统开发的进程,工程师们对此总是抱有浓厚的兴趣。
    的头像 发表于 08-27 09:59 998次阅读

    ARM嵌入式Linux 系统开发从入门到精通

    ARM嵌入式Linux 系统开发从入门到精通
    发表于 03-10 18:44

    珠海盈致科技在MES系统开发方面有哪些优势?

    、SiMDA-MES智能制造执行系统、SiMDA-WMS智能仓储管理系统等工业系统。 盈致科技的MES系统开发具有以下特点和优势: 聚焦行业与客户需求:自成立以来,盈致科技一直聚焦于电
    的头像 发表于 01-22 16:29 556次阅读

    康谋方案 | 加速自动驾驶系统开发的技术解决方案

    过程。 ADTF 能在 Windows、Linux 和 ARM 环境中运行配置。它可以实时同步处理多个传感器数据流。集成的测试环境,使得在开发平台中编程的驾驶员辅助和安全功能可以很容易地可视化并进行虚拟测试。 ADTF作为自动驾驶系统开发的技术解决
    的头像 发表于 01-19 15:57 415次阅读
    康谋<b class='flag-5'>方案</b> | 加速自动驾驶<b class='flag-5'>系统开发</b>的技术解决<b class='flag-5'>方案</b>