373 0

哈希竞猜游戏丨哈希游戏系统开发方案(程序代码) [推广有奖]

  • 0关注
  • 1粉丝

本科生

34%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
13.7723
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
730 点
帖子
39
精华
0
在线时间
29 小时
注册时间
2022-6-13
最后登录
2022-7-7

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

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

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


在一个cache系统中,需要实现一个域名白名单,域名为下列数据:
、、sohu.com 等
该白名单需要在程序启动时加载一次,主要执行查询操作。请设计一个数据结构和相应的初始化查询函数,使得检索尽可能的快。(不能使用stl::map,等等key-value刑类库)。
我们可以看到,该题目提出了字符串的快速查找,并且只加载一次。使用Hash比较好。

我们可能首先就是想到使用 C++ 中的 MAP ,题目中给出了不允许使用MAP,那么肯定第二选择就是使用Berkeley DB (DB)这种的文件数据库了,但是题目中明显提出不允许使用key-value类型库。

我们思考Berkeley DB (DB)的原理可以晓得,这个就是一个Hash的过程,map其实也是hash的思想。

自己设计一个hash系统咯。冲突处理…

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

ELFhash函数在UNIX系统V 版本4中的“可执行链接格式”( Executable and Linking Format,即ELF )中会用到,ELF文件格式用于存储可执行文件与目标文件。ELFhash函数是对字符串的散列。它对于长字符串和短字符串都很有效,字符串中每个字符都有同样的作用,它巧妙地对字符的ASCII编码值进行计算,ELFhash函数对于能够比较均匀地把字符串分布在散列表中。
这些函数使用位运算使得每一个字符都对最后的函数值产生影响。


// 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 & 0×7FFFFFFF);

}

常见哈希算法

目前常见的 Hash 算法包括国际上的 Message Digest( MD) 系列和 Secure Hash Algorithm( SHA) 系列算法,以及国内的 SM3 算法。

其中,SHA 256 是 SHA 系列算法之一,由美国国安局设计、美国国家标准与技术研究院发布的一套哈希算法,由于其摘要长度为 256bits,故称 SHA 256。SHA 256也是保护数字信息的最安全的方法之一。

例如计算

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

得到的结果将是

“db8305d71a9f2f90a3e118a9b49a4c381d2b80cf7bcef81930f30ab1832a3c90”。

对于某个文件,无需查看原始内容,只要其 SHA-256 Hash 计算后结果相同,则说明该文件内容极大概率就是一样的。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:程序代码 Algorithm Berkeley function Message

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-11-6 07:33