crypto

一些密码学原理和工具

MD5算法

  1. 把消息分组,每组64 byte(512 bit),。
  2. 对最后一个消息快(不足 56 byte)进行填充,留下最后的 8 byte 用来标识补充前消息的总长度,中间部分用padding 补位,以 0x80(0b10000000)开头,后面全0,直到长度达到 56 byte。
  3. 每个消息块第 57 byte开始存储补位前信息的长度(单位为bit),小端存储。例如:message填充后(hex)
1
6d 65 73 73		61 67 65 80 	00000000..... (最后8byte) 38 00 00 00 00 00 00 00
  1. MD5 有4个初始链变量,经过哈希摘要后,链变量的值会改变,最后一轮产生的链变量高低位呼唤就是计算出的MD5值。

    1
    2
    3
    4
    A=0x67452301
    B=0xefcdab89
    C=0x98badcfe
    D=0x10325476

哈希长度扩展攻击

受攻击的算法:MD4、MD5、RIPEMD-160、SHA-0、SHA-1、SHA-256、SHA-512、WHIRLPOOL

如果已知key的长度,原信息以及md5(key + message),就可以得到后面添加任意字符的md6值md5(key + message + any)

以md5为例,将原信息按md5填充后,得到了md5值,这个值实际上(如果有)就是下一个消息快计算的初始链变量高低位互换。也就是说我们在后面填充新的信息,用这个链变量继续按md5算法继续计算就能得到md5(secret + message + any)

作者

lll

发布于

2020-03-12

更新于

2022-09-19

许可协议