章节大纲

  • 要进行哈希长度扩展攻击,我们需要了解如何为单向哈希计算填充。SHA-256 的块大小为 64 字节,因此在哈希计算过程中,消息 M 将被填充为 64 字节的倍数。根据 RFC 6234 , SHA256 的填充包括一个字节的 \x80 ,后跟多个 0 ,然后是一个 64 位( 8 字节)的长度字段(长度是 M 的长度,即二进制数的位数)。

    假定原始消息是 M = "This is a test message"。 M 的长度为 22 字节,因此填充为 64-22 = 42 字节,包括长度字段的 8 字节。 M 的二进制数的长度为 22 * 8 = 176 = 0xB0。
    所以,加了填充的数据如下:

    "This is a test message"
    "\x80"
    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
    "\x00\x00\x00"
    "\x00\x00\x00\x00\x00\x00\x00\xB0"

    需要注意的是,长度字段使用大端序,即如果消息的长度为 0x012345},则填充中的长度字段应为:
    "\x00\x00\x00\x00\x00\x01\x23\x45"

    任务。学生需要为以下消息构造填充数据 (<key> 和 <uid> 的实际值应从 LabHome/key.txt 文件中获取。
    <key>:myname=<name>&uid=<uid>&lstcmd=1