哈希函数/散列算法

简介: 哈希函数(Hash function),又称散列函数、散列算法,它是一种不可逆的信息摘要算法,具体实现就是把任意长度的输入信息通过哈希算法变成固定长度的输出信息。

一、哈希函数/散列算法文档
1.1、哈希函数介绍
哈希函数(Hash function),又称散列函数、散列算法,它是一种不可逆的信息摘要算法,具体实现就是把任意长度的输入信息通过哈希算法变成固定长度的输出信息。

1.2、哈希碰撞与输入输出
哈希碰撞:由于Hash是无限集合的数据向有限集合的数据进行单方向映射,所以难免会出现,对不同的数据可能得到相同的哈希值,这种现象称为哈希碰撞。因为哈希碰撞无法避免,所以要尽量降低这种碰撞成功的概率,以下为哈希值输入输出的两种情况:

输入数据相同,则输出的结果值相同;
输入数据不同,则有小概率输出的结果值相同。

1.3、哈希函数的特点
哈希函数没有特定的公式,一般只要符合散列算法的要求即可,只要符合散列算法的要求都可以称之为哈希算法,以下为哈希函数的主要特点:

无论输入的消息有多长,计算出来的哈希值总是固定的;
哈希计算的输出结果必须是随机和没有规律的;
哈希函数必须是不可逆的单向函数,无法从输出的哈希值中推算出输入信息。

二、哈希函数的具体应用
一般相关的系统或组件都会自带哈希函数,我们可以使用其提供的HASH函数或HMAC函数对文本进行相关处理。通常情况下,不同的需求使用不同安全系数的散列算法,常见的安全哈希算法分类为:MD算法、SHA算法、MAC算法。

2.1、MD算法
MD(Message Digest Algorithm,消息摘要算法)算法是应用非常广泛的一个算法分支,尤其是MD5算法,它由 Ron Rivest(RSA 公司)在 1992年提出,目前被广泛应用于数据完整性校验、数据(消息)摘要、数据签名等很多场景。

MD2算法:它已被弃用,取而代之的是SHA-256和其他强大的散列算法;
MD4算法:虽然安全性已受到严重威胁,但是很多哈希算法如MD、SHA算法等都是基于MD4演进而来;
MD5算法:可以被破解,对于需要高度安全性的使用场景,专家建议改用其他哈希算法;
MD6算法:还未成为标准。

2.2、SHA算法
SHA(Secure Hash Algorithm,安全哈希算法)算法是由美国专门制定密码算法的标准机构(美国国家标准技术研究院NIST)制定的,由于它产生的数据摘要的长度更长、更难以发生碰撞,所以也更为安全,它代表着未来数据摘要算法的发展方向。

SHA-0算法:安全散列算法标准的初版,因安全问题很快就被撤掉的版本;
SHA-1算法:安全散列算法标准的第一版,该算法已经不够安全,不建议继续使用;
SHA-2算法:包括SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256等;
SHA-3算法:SHA算法分支的最新版本,也是官方推荐使用的安全版本。

2.3、MAC算法
MAC(Message Authentication Code,消息认证码算法)算法是含有加密密钥的散列算法,它在MD和SHA算法特性的基础上加入了加密密钥(参考本在线工具的场景二)。因为MAC算法融合了密钥散列函数(keyed-Hash),通常我们也把MAC算法称为HMAC(Keyed-Hash Message Authentication Code)。

MD版本:例如,HMAC-MD2、HMAC-MD4、HMAC-MD5等;
SHA版本:例如,HMAC-SHA1、HMAC-SHA224、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512等。

本教程引自《试试吧 - 领先的在线工具平台》,主打原创,全部免费,打开浏览器搜:试试吧,全网排名第一的就是本站,敬请 收藏和分享,快来试试吧:哈希函数/散列算法 - 在线工具

目录
相关文章
|
1月前
|
存储 算法 Java
解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用
在Java中,Set接口以其独特的“无重复”特性脱颖而出。本文通过解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用。
41 3
|
1月前
|
存储 算法 C#
C#哈希查找算法
C#哈希查找算法
|
2月前
|
XML JavaScript 前端开发
学习react基础(1)_虚拟dom、diff算法、函数和class创建组件
本文介绍了React的核心概念,包括虚拟DOM、Diff算法以及如何通过函数和类创建React组件。
29 2
|
1月前
|
算法 安全 Go
Python与Go语言中的哈希算法实现及对比分析
Python与Go语言中的哈希算法实现及对比分析
40 0
|
1月前
|
存储 算法 C++
【算法】哈希映射(C/C++)
【算法】哈希映射(C/C++)
|
3月前
|
算法 安全 JavaScript
安全哈希算法:SHA算法
安全哈希算法:SHA算法
53 1
安全哈希算法:SHA算法
|
3月前
|
JavaScript 算法 前端开发
国标哈希算法基础:SHA1、SHA256、SHA512、MD5 和 HMAC,Python和JS实现、加盐、算法魔改
国标哈希算法基础:SHA1、SHA256、SHA512、MD5 和 HMAC,Python和JS实现、加盐、算法魔改
497 1
|
4月前
|
缓存 负载均衡 算法
(四)网络编程之请求分发篇:负载均衡静态调度算法、平滑轮询加权、一致性哈希、最小活跃数算法实践!
先如今所有的技术栈中,只要一谈关于高可用、高并发处理相关的实现,必然会牵扯到集群这个话题,也就是部署多台服务器共同对外提供服务,从而做到提升系统吞吐量,优化系统的整体性能以及稳定性等目的。
|
3月前
|
算法
【Azure Developer】完成算法第4版书中,第一节基础编码中的数组函数 histogrm()
【Azure Developer】完成算法第4版书中,第一节基础编码中的数组函数 histogrm()
|
5月前
|
存储 算法 安全
深入理解SHA系列哈希算法:安全性的保障与演进
深入理解SHA系列哈希算法:安全性的保障与演进
下一篇
无影云桌面