3 散列算法
散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。
特点 :
- 对任意长度的消息散列得到散列值是定长的
- 散列计算速度快,非常高效
- 消息不同,则散列值一定不同
- 消息相同,则散列值一定相同
- 具备单向性,无法逆推计算
单向散列函数一般用于产生消息摘要,密钥加密,数字签名等,常见的有 MD4、MD5、SHA1、SHA256、SHA512 等:
- MD5(Message Digest Algorithm 5):是 RSA 数据安全公司开发的一种单向散列算法。
- SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个 160 位的数值。
3.1 MD5
MD5 算法 简要叙述:MD5 以 512 位分组来处理输入的信息,且每一分组又被划分为 16 个 32 位子分组,经过了一系列的处理后,算法的输出由四个 32 位分组组成,将这四个 32 位分组级联后将生成一个 128 位散列值。
MD5 改进
可以对 MD5 进行改进,加大破解的难度,典型的加大解密难度的方式有一下几种:
加盐(Salt):在明文的固定位置插入随机串,然后再进行 MD5。
先加密,后乱序:先对明文进行 MD5,然后对加密得到的 MD5 串的字符进行乱序。
先乱序,后加密:先对明文字符串进行乱序处理,然后对得到的串进行加密。
先乱序,再加盐,再 MD5 等。
3.2 SHA
安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于 2^64 位的消息,SHA1 会产生一个 160 位的消息摘要。该算法经过加密专家多年来的发展和改进已日益完善,并被广泛使用。该算 法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为 长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。散列函数值可以说是对明文的一种"指纹"或是"摘要"所以对散列值的数字 签名就可以视为对此明文的数字签名。
3.3 HMAC
HMAC(Hash Message Authentication Code,散列消息鉴别码,基于密钥的 Hash 算法的认证协议。
消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即 MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证等。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论