返回介绍

3 散列算法

发布于 2024-09-08 15:42:05 字数 1535 浏览 0 评论 0 收藏 0

散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。

特点

  • 对任意长度的消息散列得到散列值是定长的
  • 散列计算速度快,非常高效
  • 消息不同,则散列值一定不同
  • 消息相同,则散列值一定相同
  • 具备单向性,无法逆推计算

单向散列函数一般用于产生消息摘要,密钥加密,数字签名等,常见的有 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文