美文网首页
摘要算法

摘要算法

作者: Astrophel_06c5 | 来源:发表于2018-03-30 10:43 被阅读0次

SHA-1

SHA-1算法可以从明文生成160bit的信息摘要,示例如下:

给定明文: abcd

SHA-1摘要: 81FE8BFE87576C3ECB22426F8E57847382917ACF

SHA-1 与 MD5的主要区别是什么呢?

1.摘要长度不同

MD5的摘要的长度为128bit,SHA-1摘要长度160bit。多出32bit意味着什么呢?不同明文的碰撞几率降低了2^32 = 324294967296倍。

2.性能略有差别

SHA-1生成摘要的性能比MD5略低。

SHA-2

SHA-2是一系列SHA算法变体的总称,其中包含如下子版本:

SHA-256:可以生成长度256bit的信息摘要。

SHA-224:SHA-256的“阉割版”,可以生成长度224bit的信息摘要。

SHA-512:可以生成长度512bit的信息摘要。

SHA-384:SHA-512的“阉割版”,可以生成长度384bit的信息摘要。

MD5

是信息摘要的一种实现,它可以从任意长度的明文字符串生成128位哈希值

摘要哈希生成的正确姿势是什么样呢?分三步:

1.收集相关业务参数,在这里是金额和目标账户。当然,实际应用中的参数肯定比这多得多,这里只是做了简化。

2.按照规则,把参数名和参数值拼接成一个字符串,同时把给定的密钥也拼接起来。之所以需要密钥,是因为攻击者也可能获知拼接规则。

3.利用MD5算法,从原文生成哈希值。MD5生成的哈希值是128位的二进制数,也就是32位的十六进制数。

MD5.png

考虑把多种摘要算法结合使用比如

明文: abcd

MD5摘要:

e2fc714c4727ee9395f324cd2e7f331f

SHA-256摘要:

88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589

合成摘要:

e2fc714c4727ee93 209c897823b9217da3e161936f031589

取MD5摘要的前16位,取SHA-256的后32位

MD5算法底层原理:

简单概括起来,MD5算法的过程分为四步:处理原文设置初始值循环加工,拼接结果

第一步:处理原文

首先,计算出原文长度(bit)对512求余的结果,如果不等于448,就需要填充原文使得原文对512求余的结果等于448。填充的方法是第一位填充1,其余位填充0。填充完后,信息的长度就是512*N+448。

之后,用剩余的位置(512-448=64位)记录原文的真正长度,把长度的二进制值补在最后。这样处理后的信息长度就是512*(N+1)。

第二步:设置初始值

MD5的哈希结果长度为128位,按每32位分成一组共4组。这4组结果是由4个初始值A、B、C、D经过不断演变得到。

第三步:循环加工

这一步是最复杂的一步,我们看看下面这张图,此图代表了单次A,B,C,D值演变的流程。


循环加工.png

图中,A,B,C,D就是哈希值的四个分组。每一次循环都会让旧的ABCD产生新的ABCD。一共进行多少次循环呢?由处理后的原文长度决定。

假设处理后的原文长度是M

主循环次数 = M / 512

每个主循环中包含 512 / 32 * 4 = 64 次 子循环。

上面这张图所表达的就是单次子循环的流程。

1.图中的绿色F,代表非线性函数

2.红色的田字代表相加

3.黄色的<<<S(左移S位)

4.Mi是第一步处理后的原文。在第一步中,处理后原文的长度是512的整数倍。把原文的每512位再分成16等份,命名为M0M15,每一等份长度32。在64次子循环中,每16次循环,都会交替用到M1M16之一。

5.ki 一个常量,在64次子循环中,每一次用到的常量都是不同的

第四步:拼接结果

这一步就很简单了,把循环加工最终产生的A,B,C,D四个值拼接在一起,转换成字符串即可。

简而言之,MD5把128bit的信息摘要分成A,B,C,D四段(Words),每段32bit,在循环过程中交替运算A,B,C,D,最终组成128bit的摘要结果。

SHA算法与MD5区别

SHA-1算法,核心过程大同小异,主要的不同点是把160bit的信息摘要分成了A,B,C,D,E五段。

SHA-2系列算法,核心过程更复杂一些,把信息摘要分成了A,B,C,D,E,F,G,H八段。

其中SHA-256的每一段摘要长度是32bit,SHA-512的每一段摘要长度是64bit。SHA-224和SHA-384则是在前两者生成结果的基础上做出裁剪。

相关文章

  • 2019-06-19 hashlib

    摘要算法简介 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。什么是摘要算法呢?摘要算法...

  • iOS证书相关概念梳理

    非对称加密 RSA算法原理(一)RSA算法原理(二) 摘要算法 另一个神奇的算法就是摘要算法。摘要算法是指,可以将...

  • 信息摘要算法和数字签名

    信息摘要算法和数字签名 信息摘要算法 信息摘要算法区别于对称算法和非对称算法。具有以下特点: 特点 数据长度固定 ...

  • 加密

    1: 对称密码算法 ---- AES摘要算法 分割线 2:摘要算法摘要算法,具有单向不可逆的基本性质,速度快。① ...

  • 1.5 其他信息摘要算法

    信息摘要算法 - 其他信息摘要算法 信息摘要算法很多,主要的MD、MAC、SHA算法很常用,但是还有一些其他信息摘...

  • hashlib & hashmac

    摘要算法简介 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。 什么是摘要算法呢?摘要算...

  • python加密

    python中hashlib提供了常见的摘要算法,如MD5,SHA1等等 什么是摘要算法呢?摘要算法又称哈希算法\...

  • 52. 摘要算法hashlib

    Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。 什么是摘要算法呢?摘要算法又称哈希算法...

  • hashlib库 -摘要算法,

    Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。 什么是摘要算法呢?摘要算法又称哈希算法...

  • 加密算法

    消息摘要算法MD(Message Digest 消息摘要算法),SHA(Secure Hash Agorithm ...

网友评论

      本文标题:摘要算法

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