美文网首页代码人生大数据&云计算
常用加解密那些事之数字摘要

常用加解密那些事之数字摘要

作者: 木夜溯 | 来源:发表于2016-04-21 16:26 被阅读364次

    常用的数字摘要算法有MD5SHA等,下面这对这些数字摘要算法来进行介绍。
    将数据(如一段文字)运算变为另一固定长度值,是散列算法的基础原理。

    MD5算法

    消息摘要算法版本5(Message-Digest Algorithm 5)即MD5,由Ron Rivest(RSA公司)在1992年提出,目前被广泛应用于数据完整性校验、数据(消息)摘要、数据加密等。MD2MD4MD5都产生16字节(128位)的校验值,一般用32位十六进制数表示。MD2的算法较慢但相对安全,MD4速度很快,但安全性下降,MD5MD4更安全、速度更快。

    介绍

    MD5 报文摘要算法:MD5 报文摘要算法将任意长度的信息作为输入值,并将其换算成一个 128 位长度的"指纹信息"或"报文摘要"值来代表这个输入值,并以换算后的值作为结果。MD5 算法主要是为数字签名应用程序而设计的;在这个数字签名应用程序中,较大的文件将在加密(这里的加密过程是通过在一个密码系统下[如:RSA]的公开密钥下设置私有密钥而完成的)之前以一种安全的方式进行压缩。[来自RFC1321]
    MD5用途广泛,对数据生成信息摘要放置被篡改,为大文件生成唯一的MD5信息摘要,保证文件未被修改。

    实现原理:

    MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

    MD5原理参考:
    MD5算法原理
    SHA1和MD5算法详解和源码

    SHA算法

    安全散列算法(SHA)能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。也是一种比较常用的数据摘要算法,目前SHA家族主要有五个算法,对于这几种算法SHA家族中有介绍。

    介绍

    SHA(Secure Hash Algorithm)是由美国专门制定密码算法的标准机构——美国国家标准技术研究院(NIST)制定的,SHA系列算法的摘要长度分别为:SHA为20字节(160位)、SHA256为32字节(256位)、 SHA384为48字节(384位)、SHA512为64字节(512位),由于它产生的数据摘要的长度更长,因此更难以发生碰撞,因此也更为安全,它是未来数据摘要算法的发展方向。由于SHA系列算法的数据摘要长度较长,因此其运算速度与MD5相比,也相对较慢。
    目前SHA1的应用较为广泛,主要应用于CA和数字证书中,另外在目前互联网中流行的BT软件中,也是使用SHA1来进行文件校验的。

    实现原理

    给消息附加填充位使其模512与448同余(M%512 == 448)。即使满足了条件也要填充512位(比特)。填充过程是这样的:先补一位1,后面一律补0,直至满足条件。因此至少填充1位,最多填充512位。
    因为我们存储的时候是以字节为单位存储的,所以我们的消息的长度(单位:位)一定是8的倍数。而我们填充的时候也一定是8位,8位的来填充。也即不可能只填充一个二进制位,至少是8个二进制位(一个字节)。因此最少填充1个字节,最多填充64个字节(64*8=512)。
    在附加填充位完成之后,还要附加长度,即附加64位数据来存储原始消息的长度。因为在附加填充位完成之后,消息长度(单位:位)是512与448同余,而此时再附加64位之后,消息长度就变成了512的整数倍。
    最后我们开始计算消息摘要的时候,就是每512位为一组开始计算的。
    其详细的实现参见什么是安全散列算法SHA256?

    参考:数据摘要算法总结

    相关文章

      网友评论

        本文标题:常用加解密那些事之数字摘要

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