Hash的概念及应用

作者: ijava | 来源:发表于2017-06-09 22:37 被阅读24次

1.概念

        Hash,一般翻译为“散列”,也有直接音译为“哈希”的。

        Hash就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。直观解释起来,就是对一串数据m进行杂糅,输出另一段固定长度的数据h,作为这段数据的特征(指纹)。也就是说,无论数据块m有多大,其输出值h为固定长度。

2.用途

        Hash主要应用于数据结构中和密码学中。

        用于数据结构时,主要是为了提高查询的效率,这就对速度比较重视,对抗碰撞不太看中,只要保证hash均匀分布就可以。

        在密码学中,hash算法的作用主要是用于消息摘要和签名,换句话说,它主要用于对整个消息的完整性进行校验。

2.1数据结构

        使用Hash的数据结构叫做散列表,主要是为了提高查询的效率。也有直接译作哈希表,也叫Hash表,

        Hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于Hash表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录的关键字关联起来,从而能够很快速地进行查找。

2.2密码学

        在密码学中,hash算法的作用主要是用于消息摘要和签名,换句话说,它主要用于对整个消息的完整性进行校验。

        举个用于消息摘要例子,银行的数据库中是不能保存用户密码的原文的,只能保存密码的hash值。在这种应用场景里,对于抗碰撞和抗篡改能力要求极高,对速度的要求在其次。一个设计良好的hash算法,其抗碰撞能力是很高的。以MD5为例,其输出长度为128位,设计预期碰撞概率为,这是一个极小极小的数字——而即便是在MD5被王小云教授破解之后,其碰撞概率上限也高达,也就是说,至少需要找次才能有1/2的概率来找到一个与目标文件相同的hash值。

        需要注意的是,hash算法在密码学中,主要用于信息的摘要和完整性校验,而不是加密。

        概括来说,哈希(Hash)是将目标文本转换成具有相同长度的、不可逆的杂凑字符串(或叫做消息摘要),而加密(Encrypt)是将目标文本转换成具有不同长度的、可逆的密文。

相关文章

  • Hash的概念及应用

    1.概念 Hash,一般翻译为“散列”,也有直接音译为“哈希”的。 Hash就是把任意长度的输入,...

  • Hash的应用

    了解比特币以及了解学习比特币背后的区块链技术必然离不开对哈希值的学习,对于有编码功底以及密码学功底的人来说是是最简...

  • 分布式集群架构场景化解决方案

    一致性hash算法hash算法应用场景普通hash算法存在的问题一致性hash算法手写一致性hash算法nginx...

  • Redis 字典

    Redis 字典使用Hash 表作为底层的实现,Hash 表这个结构不难理解,但是在实际应用 Hash 表时,当数...

  • Vue、React前端项目打包部署

    前端单页面应用部署 前端打包上线部署方案之 hash路由模式 对于hash路由模式打包的单页面应用,直接发布到服务...

  • 枚举的概念及应用

    一、枚举的概念 二、枚举类型的定义 三、枚举变量的定义 四、枚举使用的注意 五、枚举变量的基本操作 五、枚举变量的...

  • 【vue-cli】路由模式

    1. 概念 路由模式包括 hash模式和history 模式 1.1 hash模式 单页面应用中vue-route...

  • SPA路由原理及实现

    单页面应用中的路由分为两种: hash模式和history模式 1. hash模式 比如 https://www....

  • 极客时间《架构师训练营》第五章课后作业

    用你熟悉的语言实现一致性 hash 算法 简介 一致性 Hash 被广泛的应用于负载均衡领域的 Hash 算法,我...

  • 4.5-Redis6数据结构之Hash类型介绍和应用场景—小滴课

    Redis6数据结构之Hash类型介绍和应用场景 简介:Redis6数据结构之Hash类型介绍和应用场景 数据结构...

网友评论

    本文标题:Hash的概念及应用

    本文链接:https://www.haomeiwen.com/subject/ludmfxtx.html