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

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

3天内不再提示

哈希hash游戏竞猜的开发逻辑分析(方案管理)

a1271916008 来源:a1271916008 作者:a1271916008 2022-06-09 09:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

什么是哈希/Hash

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

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

在一个cache系统中,需要实现一个域名白名单,域名为下列数据:

、、sohu.com等

poYBAGKhS6-ATqvkAAQrvVrXLJs885.png

该白名单需要在程序启动时加载一次,主要执行查询操作。请设计一个数据结构和相应的初始化查询函数,使得检索尽可能的快。(不能使用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&0×7FFFFFFF);

}

//该散列算法是基于贝尔实验室的彼得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 int OneEighth=(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);

}

审核编辑:符乾江

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

    关注

    2

    文章

    834

    浏览量

    30048
  • 哈希函数
    +关注

    关注

    0

    文章

    43

    浏览量

    9709
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Molex OTS零哈希电缆组件技术解析与应用指南

    Molex现成(OTS)零哈希电缆组件是标准分立式电线电缆组件,设计用于应对电子设备日益缩小的挑战。这些电缆组件提供节省空间的薄型解决方案,具有创新的双点接触特性,有2、4、6和8电路尺寸可供选择
    的头像 发表于 11-17 16:44 457次阅读

    termux如何搭建python游戏

    模拟器,支持通过APT包管理器安装软件。搭建Python游戏开发环境前需完成以下基础配置: 1. 更换国内源 为提升下载速度,需替换Termux默认源为清华源,执行以下命令: ```bash
    发表于 08-29 07:06

    哈希极化到零拥塞:主动路径规划在RoCE网络中的负载均衡实践

    集群整体性能的瓶颈。本文将探讨哈希极化的成因、影响,并介绍一种通过主动路径规划(PPD)来优化网络配置、提升性能的解决方案
    的头像 发表于 07-21 17:27 1660次阅读
    从<b class='flag-5'>哈希</b>极化到零拥塞:主动路径规划在RoCE网络中的负载均衡实践

    从技术到体验:化妆镜 PCBA 方案开发逻辑与行业洞察

    ,印刷电路板组件)方案。本文将深入拆解化妆镜 PCBA 方案的技术构成、开发逻辑及行业趋势,为从业者和消费者提供全景式参考。​ 一、化妆镜 PCBA
    的头像 发表于 07-15 14:42 442次阅读

    关于RK3568核心板可以下载固件成功,但是启动失败,串口打印日志显示:HASH(c): error Invalid DTB hash !

    DTB: rk3568-atk-evb1-mipi-dsi-1080p#_saradc_ch2=341.dtb HASH(c): error Invalid DTB hash ! No find valid DTB, ret=-22
    发表于 07-01 09:42

    一体化解决方案Jama Software,如何支持医疗设备开发中的需求管理、风险管理与验证?

    医疗设备开发中的需求管理太复杂?试试一体化解决方案Jama Connect——支持ISO 1497等关键标准的合规认证、FMEA分析、端到端可追溯性与变更
    的头像 发表于 06-25 11:36 402次阅读
    一体化解决<b class='flag-5'>方案</b>Jama Software,如何支持医疗设备<b class='flag-5'>开发</b>中的需求<b class='flag-5'>管理</b>、风险<b class='flag-5'>管理</b>与验证?

    鸿蒙5开发宝藏案例分享---一多开发实例(游戏

    十年前藏的现金一样惊喜!)这些藏在文档深处的\"武功秘籍\",能帮我们轻松实现分布式游戏、跨端协同这些听起来很酷的功能。快上车,带你解锁鸿蒙开发的正确姿势! 一、分布式游戏手柄
    发表于 06-03 18:22

    基于RK3576开发板的多路网络摄像头取流方案

    环境。接着,通过编译脚本build.sh进行例程编译,并运行示例程序。方案设计包含四大逻辑模块:启动、取流解码、算法分析和显示逻辑,相关代码均位于指定目录中。
    的头像 发表于 05-13 11:14 1717次阅读
    基于RK3576<b class='flag-5'>开发</b>板的多路网络摄像头取流<b class='flag-5'>方案</b>

    BMS管理方案NRF52833

    电池的智能化管理,同时提高电池使用寿命。通过 BMS 管理方案,结合手机APP、服务器数据统计分析,实现对电池系统的高效、安全和可靠管理,为
    发表于 04-22 14:26

    智能仓储管理解决方案NRF5832

    在当今的仓储管理领域,无线通讯技术的应用成为解决物品出入库管理难题的一种理想方案。我们的研发团队经过反复实践和应用,成功开发了一套名为\"智能仓储
    发表于 04-10 14:10

    BMS 管理方案 NRF52833

    电池的智能化管理,同时提高电池使用寿命。通过 BMS 管理方案,结合手机APP、服务器数据统计分析,实现对电池系统的高效、安全和可靠管理,为
    发表于 04-09 16:06

    全链路赋能游戏鸿蒙化适配,鸿蒙游戏开发者服务焕新升级

    实践,通过专家授课、案例解析与现场互动,为开发者提供从技术适配到创新玩法落地的一站式解决方案游戏鸿蒙化流程详解:7步轻松实现从适配到上架 活动中,华为技术团队系统阐释了游戏鸿蒙化的
    的头像 发表于 03-17 09:25 840次阅读
    全链路赋能<b class='flag-5'>游戏</b>鸿蒙化适配,鸿蒙<b class='flag-5'>游戏</b><b class='flag-5'>开发</b>者服务焕新升级

    亚马逊云科技推出Amazon GameLift Streams助力开发者实现游戏全平台跨设备串流

    亚马逊云科技全新功能可助力游戏开发者触达全球更多玩家,拓展变现机会并提升收入   北京 ——2025 年 3 月 13 日 亚马逊云科技宣布推出全托管游戏串流解决方案Amazon Ga
    发表于 03-13 13:36 379次阅读

    MediaTek与知名游戏引擎开发商Cocos达成深度合作

    为带给开发者和用户智能互动新体验, MediaTek 与知名游戏引擎开发商 Cocos 达成深度合作,将 MediaTek 端侧生成式 AI 领域的前沿技术,与 Cocos 在游戏
    的头像 发表于 01-10 13:48 677次阅读

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

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