0

我一直在研究加密/解密以及最近的填充预言攻击。现在,在我的学习中,我遇到了一个看起来像这样的 URL:

http://(some url)?stuff=IfCmMrKNpduwAZW51Kz-HGcGROyJM8ul3Q3us3kzzQQe-rwWR1e7tv3pCWGkqKe7XCK5J9q0sUfv2V!Ot-7rlZ3meyeVtX44xib7oMV-Q6TpIfuD8FfHskAw9oY8cjM-5r2!bTwy-AhsnNTKTM9GClGQOCNIQhDZruztsRfsOR65BTgWm31ZepjLayhN-I8AjB6jkoZQBJZtXNk3VyJ3Cg~~

现在,我将 stuff 参数中的密文放入字符计数器中,发现该密文由 216 个字符(即 216 个字节)组成。但是,数字 216 不是 16 的倍数(因为 216 / 16 = 13.5)。

AES-128 使用 16 字节块(是的,应用程序确认数据是使用 AES-128 加密的),所以当数据被加密时,它应该已经被填充,以便密文最终由多个字节组成是 16 的倍数。这是正确的,不是吗?

如果是这种情况,那么为什么上面的 URL 会返回 200 ok 状态而不是 500 无效填充的内部服务器错误?为什么只有当我删除该密文中的字符或更改字符时,才返回无效填充错误?(顺便说一句,那个网址不是真正的网址。我不想使用实际的网址,但密文是真实的)。我在这里错过了什么吗?

4

0 回答 0