为何要用Hash值来保存密码?一起来探索Hash算法的奥秘吧!
一、什么是Hash算法
Hash算法(哈希算法,Hash算式,散列算法,消息摘要算法)将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。一般用于快速查找和加密算法。
简单来说就是,哈希(Hash)算法,即散列函数。它是一种单向密码*,即它是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。同时,哈希函数可以将任意长度的输入经过变化以后得到固定长度的输出。哈希函数的这种单向特征和输出数据长度固定的特征使得它可以生成消息或者数据。
二、Hash算法的特性
1、正向快速
给定明文和Hash算法,在有限时间和有限资源内能计算得到Hash值。
2、单项不可逆
只能单项从数据内容本身快速计算出对应的Hash值,反之无法从Hash值推算出数据内容本身。
3、不可预测
原始输入信息发生任何变化,新的Hash值都应该出现很大变化。
4、唯一性
不同的数据具有不同的Hash值。很难找到两个Hash值一致,但数据本身不一致的数据。
三、Hash算法有哪些
目前常见Hash算法有MD5和SHA系列,但是据说目前MD5和SHA1已经被攻破,所以一般推荐至少使用SHA2-256算法。
前面说了Hash算法就是可以将任意数据生成固定长度的16进制字符串,这里的数据可以是文本、图片、视频等。下面使用md5在线加密解密工具来演示一下:
1、找一款在线加密解密工具,我找到的是下图这个,进入md5在线加密解密工具页面(md5.cn),按步骤操作。
2、进入页面后,点击在在线工具栏目,选择Hash。
3、点击SHA1输入信息,进行Hash加密,得到Hash值。
输入的信息可以是任意的,经过加Hash加密计算后得到的是固定长度的16进制的字符串。
四、Hash算法在信息安全方面的应用
1、文件校验
常见的文件校验方法有奇偶校验和CRC校验,这两种校验都不具备抵抗数据篡改的能力,它们可以在一定程度上检测和纠正数据传输中的错误,但不能防止数据被篡改。MD5 Hash算法的“数字指纹”特性使其成为目前应用最广泛的文件完整性校验和(Checksum)算法。许多Unix系统提供计算md5校验和的命令。
2、数字签名
哈希算法也是现代密码学的重要组成部分。由于非对称算法运算速度慢,单向哈希函数在数字签名协议中扮演着重要的角色。对哈希值进行数字签名,也称为“数字摘要”,在统计上等同于对文件本身进行数字签名。
3、鉴权协议
鉴权协议又被称作挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。