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

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

3天内不再提示

区块哈希游戏开发逻辑(上链)哈希竞猜游戏开发

a1271916008 来源:a1271916008 作者:a1271916008 2022-06-02 11:39 次阅读

什么是哈希/ Hash

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

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

在一个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

unsignedintELFHash(char*str)

{

unsignedinthash = 0;

unsignedintx= 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 计算后结果相同,则说明该文件内容极大概率就是一样的。

审核编辑:符乾江

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

    关注

    2

    文章

    818

    浏览量

    29280
  • python
    +关注

    关注

    51

    文章

    4657

    浏览量

    83380
收藏 人收藏

    评论

    相关推荐

    如何使用Rust从零开发区块

    区块的Body部分是一个普通的字符串向量,而头部看起来更有趣。在所有的字段中,prev_hash 是最有趣的,它存储了前一个区块哈希字段值,我们将在这篇文章后面的链部分讨论它。
    的头像 发表于 01-22 13:58 400次阅读
    如何使用Rust从零<b class='flag-5'>开发区块</b>链

    【鸿蒙千帆起】桌游卡牌游戏品类首发!《三国杀》完成鸿蒙原生应用开发

    近日,作为鸿蒙生态游戏先锋合作伙伴之一,游卡网络宣布已完成《三国杀》系列游戏鸿蒙原生应用开发,成为鸿蒙生态首款TOP级桌游卡牌类标杆游戏。 作为一个国民级IP,游卡《三国杀》系列
    的头像 发表于 12-21 21:15 445次阅读
    【鸿蒙千帆起】桌游卡牌<b class='flag-5'>游戏</b>品类首发!《三国杀》完成鸿蒙原生应用<b class='flag-5'>开发</b>

    Google Play 游戏电脑版 | 助力开发者高效打造无缝跨设备游戏

    ZlongGames 借助 Google Play 游戏电脑版简化跨平台开发流程,成功为用户打造了无缝的跨设备游戏体验,用户留存率和付费率均有显著提升。 快来一起观看视频,了解 ZlongGames
    的头像 发表于 12-08 13:50 198次阅读
    Google Play <b class='flag-5'>游戏</b>电脑版 | 助力<b class='flag-5'>开发</b>者高效打造无缝跨设备<b class='flag-5'>游戏</b>

    【风火轮YY3568开发板免费体验】+ YY3568安装运行Unity的自制游戏教程范例

    ,并成功在自己的开发笔记本,以及手机(Android-12)运行,因此想测试一下能否在YY3568的Android-11系统运行。 根据YY3568的wiki的内容,使用adb
    发表于 11-14 11:44

    Unity中国、Cocos为OpenHarmony游戏生态插上腾飞的翅膀

    尝试基于团结引擎做游戏开发和移植。 开源共建,繁荣OpenHarmony生态 为帮助开发者更高效开发应用,OpenHarmony开发套件为
    发表于 10-23 16:15

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

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

    哈希与加密有什么区别?

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

    可以在VisionFive 2玩PSP游戏啦!欢迎各位游戏爱好者体验

    在PPSSPP社区和赛昉科技软件团队的共同努力下,PPSSPP 9月最新发布的1.16版本中增加了基于IR的全新RISC-V JIT后端,现在各位游戏爱好者们可以在VisionFive 2玩PSP
    发表于 09-11 17:17

    Linux内核分析 端口哈希

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

    【飞凌i.MX9352开发板试用】+机械臂游戏3—游戏源代码(开源)原创首发

    【飞凌i.MX9352开发板试用】+机械臂游戏 3游戏操纵杆控制四自由度机械臂(开源)原创首发 - 飞凌嵌入式
    的头像 发表于 07-26 11:28 689次阅读

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

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

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

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

    基于JAVA的J2ME的手机游戏(贪吃蛇)开发设计

    随着通信技术的发展和手机的普及,手机游戏开发技术越来越为人们所关注。以J2ME为开发平台,利用Java提供强大工具,不但可以在手机上实现静态HTML技术所无法实现的计算处理、数据存储、与服务器
    发表于 06-09 16:04 0次下载

    【CW32饭盒派开发板试用体验】+机械臂游戏项目(开源)(5)加红外游戏操控机

    接上几篇: 【CW32饭盒派开发板试用体验】+机械臂游戏项目(开源)(1)开箱试验舵机 - 武汉芯源MCU - 电子技术论坛 - 广受欢迎的专业电子论坛! 【CW32饭盒派开发板试用体验】+机械臂
    发表于 05-24 22:27

    直通 GDC 2023 中国行丨Azure OpenAI 服务改变游戏开发

    毫不意外,在刚刚闭幕的 GDC 2023 中国行现场,以 Azure OpenAI 服务为代表的全新创作工具成为线上、线下所有观众关注的焦点。当 AIGC 智能创作时代向游戏开发者奔涌而来
    的头像 发表于 04-07 05:40 473次阅读