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

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

3天内不再提示

哈希是什么,常见的哈希算法有哪些

18125913365 来源:18125913365 作者:18125913365 2022-06-23 14:57 次阅读

什么是哈希?

哈希又称作“散列”,是一种数学计算机程序,它接收任何一组任意长度的输入信息,通过哈希算法变换成固定长度的数据指纹输出形式,如字母和数字的组合,该输出就是“哈希值”。总体而言,哈希算法可理解为一种消息摘要算法,将消息或数据压缩变小并拥有固定格式。由于其单向运算具有一定的不可逆性,哈希算法已成为加密算法中一个构成部分,但完整的加密机制不能仅依赖哈希算法。在一个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函数对于能够比较均匀地把字符串分布在散列表中。

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

常见哈希算法

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

审核编辑:符乾江

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

    关注

    7

    文章

    3750

    浏览量

    64219
  • 源码
    +关注

    关注

    8

    文章

    632

    浏览量

    29107
  • C++
    C++
    +关注

    关注

    21

    文章

    2097

    浏览量

    73452
收藏 人收藏

    评论

    相关推荐

    如何提升SoC的安全性

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

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

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

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

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

    艾体宝洞察 一文读懂最新密码存储方法,揭秘密码存储常见误区!

    本篇文章将引入并介绍密码存储中的基石,关于密码哈希、盐加密(Salting)、密钥派生函数(KDF)的原理及其应用,揭示密码存储中的常见误区,并分享一系列安全实践。
    的头像 发表于 09-14 17:37 263次阅读
    艾体宝洞察 一文读懂最新密码存储方法,揭秘密码存储<b class='flag-5'>常见</b>误区!

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

    说到AI,SiRider S1可不含糊。它搭载了安谋科技的“周易”NPU,这可是专为神经网络设计的“大脑”。了它,SiRider S1就像拥有了超能力,能轻松应对各种复杂的人工智能算法。无论是
    发表于 09-08 21:58

    ESP8266如何避免固件损坏?

    我们需要在固件下载中采用强大的固件升级方法,我们知道在固件下载中有一个示例。 例子/at_upgrade.c 对于该示例,我们一个问题: 如何避免损坏的bin文件? 因为如果恶意用户将损坏
    发表于 07-19 06:00

    鸿蒙开发:Universal Keystore Kit 密钥管理服务 HMAC ArkTS

    HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),是一种基于Hash函数和密钥进行消息认证的方法。
    的头像 发表于 07-12 18:22 579次阅读

    鸿蒙开发:Universal Keystore Kit 密钥管理服务 HMAC C、C++

    HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),是一种基于Hash函数和密钥进行消息认证的方法。
    的头像 发表于 07-12 09:36 278次阅读

    运动控制算法哪些

    运动控制算法是机器人学和自动化领域中的核心技术之一,它们负责规划和执行机器人或自动化设备的精确运动。以下是一些常见的运动控制算法,以及它们的基本原理和应用场景。 PID控制算法
    的头像 发表于 06-13 09:17 1942次阅读

    基于FPGA的常见的图像算法模块总结

    意在给大家补充一下基于FPGA的图像算法基础,于是讲解了一下常见的图像算法模块,经过个人的总结,将知识点分布如下所示。
    的头像 发表于 04-28 11:45 507次阅读
    基于FPGA的<b class='flag-5'>常见</b>的图像<b class='flag-5'>算法</b>模块总结

    如何在IFX ConfigWizard中更改文件夹/文件夹结构?

    使用的哈希算法。 (不是我们的工作) 如示例所示,我们将 ConfigWizard 与 IAR Workbench 集成在一起。 任何改变结构的尝试都会导致在此过程中出现故障... 你能告诉我们清理存储库的方法吗?
    发表于 01-22 06:26

    刷电机常见故障哪些

    刷电机常见故障哪些 刷电机是一种常见的电动机类型,广泛应用于各种电器和机械设备中。然而,由于长时间运行或其他原因,
    的头像 发表于 01-04 11:26 1794次阅读

    【先楫HPM5361EVK开发板试用体验】3手把手实战安全数据处理器 SDP

    Algorithm,是一种安全哈希算法。1和256是指输出数据的长度,也就是经过哈希计算后得到的结果的长度。SHA-1的输出长度为160位,而SHA-256的输出长度为256位。 那么,什么是
    发表于 12-19 00:36

    redis hash底层实现原理

    Redis是一个开源的内存数据库,使用键值对存储数据。其中,Redis中的数据结构之一就是哈希(Hash),它提供了一种将多个字段(Field)存储在一个键(Key)中的方法。那么Redis的哈希
    的头像 发表于 12-04 16:27 541次阅读

    php加密方式哪些

    的管理和传递困难。 非对称加密 非对称加密算法使用一对密钥,即公钥和私钥。公钥用于加密,私钥用于解密。常见的非对称加密算法RSA、DSA、ECC。非对称加密
    的头像 发表于 12-04 15:32 606次阅读