1
0
Files
cryptopal_rs/cryptopal_book/src/challenge_16.md
2025-09-08 17:25:30 +08:00

1.2 KiB
Raw Blame History

挑战16CBC位翻转攻击

生成随机AES密钥。

结合你的填充代码和CBC代码来编写两个函数。

第一个函数应该接受任意输入字符串,前置字符串:

"comment1=cooking%20MCs;userdata="

...并附加字符串:

";comment2=%20like%20a%20pound%20of%20bacon"

函数应该转义";"和"="字符。

然后函数应该将输入填充到16字节AES块长度并在随机AES密钥下加密它。

第二个函数应该解密字符串并查找字符";admin=true;"(或者,等价地,解密,用";"分割字符串将每个结果字符串转换为2元组并查找"admin"元组)。

根据字符串是否存在返回true或false。

如果你正确编写了第一个函数,应该可能向其提供会生成第二个函数正在寻找的字符串的用户输入。我们必须破解密码才能做到这一点。

相反,修改密文不知道AES密钥来完成这个目标。

你依赖的事实是在CBC模式中密文块中的1位错误

  • 完全打乱发生错误的块
  • 在下一个密文块中产生相同的1位错误(/编辑)

停下来思考一下

在你实施这个攻击之前回答这个问题为什么CBC模式具有这个属性