这些天我一直在阅读和做关于 AES 的实验。比如说 128 位 AES,在加密过程中,如果明文小于 128 位,则将添加全 0 的填充。解密后,这些 0 可以被删除。
我正在考虑使用填充进行错误检测:如果明文始终为 16 位,则解密后的文本应为(某些数据的 16 位 + 0 的 112 位)的形式。我们称这种形式为“法律明文”。总共可以有 2^16 个合法明文。
如果攻击者不知道密钥和 IV,通过修改密码,解密的明文可以是任何形式。他/她有 (2^16)/(2^128) = 2^(-112) 的概率使其成为合法的明文,这是一个非常小的机会。
这听起来合理吗?
(当然,攻击者仍然可以通过修改第 i 个密码来进行位翻转,以在第 (i+1) 个明文中获得想要的结果)