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

    文章

    3993

    浏览量

    67742
  • 源码
    +关注

    关注

    8

    文章

    682

    浏览量

    31094
  • C++
    C++
    +关注

    关注

    22

    文章

    2122

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    C语言的常见算法

    # C语言常见算法 C语言中常用的算法可以分为以下几大类: ## 1. 排序算法 ### 冒泡排序 (Bubble Sort) ```c void bubbleSort(int
    发表于 11-24 08:29

    CW32F030C8T6数字签名实战

    加密库(如mbedTLS、WolfSSL)实现数字签名。常见算法包括RSA、ECDSA。 2.2 基于SHA和RSA的签名流程 生成哈希值:使用SHA-256对固件计算哈希值。 私钥
    发表于 11-19 08:03

    CW32F030C8T6数字签名的实战指南

    加密库(如mbedTLS、WolfSSL)实现数字签名。常见算法包括RSA、ECDSA。 2.2 基于SHA和RSA的签名流程 生成哈希值:使用SHA-256对固件计算哈希值。 私钥
    发表于 11-18 06:35

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

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

    MD5信息摘要算法实现一(基于蜂鸟E203协处理器)

    命名为“Q”,则message_var=Q[(32*i):(32*i+31)]。 4、哈希运算(Hash Operation) 此部分为MD5算法的核心。MD54组主循环,每组的主循环需要进行16轮
    发表于 10-30 07:18

    哪些常见的AI算法可以用于装置数据的异常检测?

    (如边缘 / 云端)。以下按 算法类型分类 ,详细介绍常见 AI 算法的原理、适用场景、优缺点及装置数据适配性: 一、无监督式异常检测算法(主流选择) 装置数据多为 无标注数据 (仅记
    的头像 发表于 09-18 09:27 424次阅读
    <b class='flag-5'>有</b>哪些<b class='flag-5'>常见</b>的AI<b class='flag-5'>算法</b>可以用于装置数据的异常检测?

    【上海晶珩睿莓1开发板试用体验】4、Coremark性能测试

    是为嵌入式和通用 CPU 提供一个可重复、可比较的基线测试,侧重于核心算法性能(整数运算、控制流、哈希、循环与内存访问模式),而不是系统级或浮点性能。 本次评测的是搭载 Amlogic S905X4(4
    发表于 08-18 22:18

    缓存之美:从根上理解 ConcurrentHashMap

    本文将详细介绍 ConcurrentHashMap 构造方法、添加值方法和扩容操作等源码实现。 ConcurrentHashMap 是线程安全的哈希表,此哈希表的设计主要目的是在最小化更新操作对哈希
    的头像 发表于 08-05 14:48 418次阅读

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

    智算集群对网络性能,特别是高吞吐、低延迟和无损特性有着严苛要求,RoCE因此被广泛应用。然而,在主流Clos组网架构下,传统的ECMP路由机制存在天然的局限性,容易引发哈希极化问题,成为制约
    的头像 发表于 07-21 17:27 1676次阅读
    从<b class='flag-5'>哈希</b>极化到零拥塞:主动路径规划在RoCE网络中的负载均衡实践

    一文详解Nginx负载均衡

    Nginx作为负载均衡器,通过将请求分发到多个后端服务器,以提高性能、可靠性和扩展性。支持多种负载均衡算法,如轮询、最小连接数、IP哈希等,可以根据需求选择适合的算法
    的头像 发表于 06-25 14:51 868次阅读
    一文详解Nginx负载均衡

    工业物联网常见的协议哪些

    工业物联网常见的协议哪些
    的头像 发表于 06-14 15:52 1032次阅读

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

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

    加密算法在网络安全中扮演什么角色?

    : 通过哈希函数和消息认证码(MAC),加密算法可以检测数据在传输过程中是否被篡改,确保数据的完整性。 提供身份验证 : 非对称加密算法和数字签名技术可以验证通信双方的身份,防止身份冒充攻击。 实现数据签名 : 数字签名使用非
    的头像 发表于 12-17 16:00 888次阅读

    常见的加密算法哪些?它们各自的优势是什么?

    常见的加密算法及其优势如下: AES(Advanced Encryption Standard): AES是一种对称加密算法,采用分组密码体制,支持128位、192位和256位密钥长度。AES的优势
    的头像 发表于 12-17 15:57 1735次阅读

    常见的lvs负载均衡算法

    常见的lvs负载均衡算法包括轮询(RR)、加权轮询(WRR)、最小连接(LC)、加权最小连接(WLC)、基于局部性的最少链接(LBLC)、带复制的LBLC(LBLCR)、目标地址散列(DH)、源地址
    的头像 发表于 12-12 13:50 934次阅读