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

    文章

    3866

    浏览量

    61308
  • 哈希算法
    +关注

    关注

    1

    文章

    56

    浏览量

    10690
收藏 人收藏

    评论

    相关推荐

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

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

    嵌入式系统开发资料分享

    电子发烧友网站提供《嵌入式系统开发资料分享.rar》资料免费下载
    发表于 11-10 09:41 0次下载
    嵌入式<b class='flag-5'>系统开发</b>资料分享

    golang语言的加密解密算法实现

    HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code)的缩写, 它通过一个标准算法,在计算哈希的过程中,把key混入计算过程中。
    发表于 10-12 15:11 902次阅读

    基于网络的嵌入式监控系统开发

    电子发烧友网站提供《基于网络的嵌入式监控系统开发.pdf》资料免费下载
    发表于 10-12 10:30 0次下载
    基于网络的嵌入式监控<b class='flag-5'>系统开发</b>

    STM32H7怎么实现一个哈希的数据运算处理?

    STM32H7怎么实现一个哈希的数据运算处理
    发表于 10-10 06:34

    哈希与加密有什么区别?

    哈希与加密有什么区别
    发表于 10-09 06:29

    Crypto加密算发库资料

    Crypto模块提供通用的加密和哈希算法,包含对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的一整套封装。用于连接物联网云设备,例如使用ESP32上传阿里云。Crypto-0.2.0是目前最稳定的版本。
    发表于 09-18 07:11

    STM32助力新产品设计提升安全性

    对称加密算法、AES-ECB模式缺陷与解决办法、Hash哈希函数、Hash哈希算法等。
    发表于 09-05 07:40

    Linux内核分析 端口哈希

    端口哈希桶 在inet_csk_get_port函数中的变量声名中有如下几个结构体: struct inet_hashinfo * hinfo = sk- >sk_prot- >h.hashinfo
    的头像 发表于 07-31 11:03 425次阅读
    Linux内核分析 端口<b class='flag-5'>哈希</b>桶

    Linux系统开发环境搭建

    今天给大家讲一讲Linux系统开发环境搭建。
    发表于 07-12 14:51 686次阅读
    Linux<b class='flag-5'>系统开发</b>环境搭建

    设计大规模并行哈希图时的几个重要考虑事项

    在 GPU 上使用大规模并行哈希图实现性能最大化
    的头像 发表于 07-05 16:30 760次阅读
    设计大规模并行<b class='flag-5'>哈希</b>图时的几个重要考虑事项

    加密算法如何保护嵌入式设计

    密码学与用于实现它的算法一样强大。在现代密码学中,我们拥有基本的XOR函数,以及当今许多应用程序中使用的更复杂的算法。在这篇博文中,我将概述一些关键算法,包括安全哈希
    的头像 发表于 06-28 10:16 309次阅读
    加密<b class='flag-5'>算法</b>如何保护嵌入式设计

    Dubbo负载均衡策略之一致性哈希

    本文主要讲解了一致性哈希算法的原理以及其存在的数据倾斜的问题,然后引出解决数据倾斜问题的方法,最后分析一致性哈希算法在Dubbo中的使用。通过这篇文章,可以了解到一致性
    的头像 发表于 06-16 15:30 314次阅读
    Dubbo负载均衡策略之一致性<b class='flag-5'>哈希</b>

    它发现了更快的排序算法,速度快 70%

    这一次,Google DeepMind 的全新强化学习系统 AlphaDev 发现了一种比以往更快的哈希算法,这是计算机科学领域中的一种基本算法,AI 的成果现已被纳入 LLVM 标准
    的头像 发表于 06-12 14:46 353次阅读
    它发现了更快的排序<b class='flag-5'>算法</b>,速度快 70%

    如何使用ESP8266并想计算所有可用内存的校验和或哈希值?

    我正在使用 ESP8266 并想计算所有可用内存的校验和或哈希值。我试图自己解决这个问题,但没有成功。因此,我希望我能在这里得到一些帮助或提示。在下文中,我尝试描述到目前为止我尝试过的内容。 首先
    发表于 06-07 06:43