使用AES算法时填充有问题,那么如果在加密和解密数据时禁用填充检查会发生什么?
答案 0 :(得分:1)
AES是块密码,仅在单个块上运行。它需要一种操作模式来加密多个块。如果操作模式也仅适用于块(如CBC,ECB),那么您无法加密任意明文。如果禁用这些模式的填充,则需要提供恰好是块大小的倍数的明文(AES为128位)。
对于像流式传输模式的CTR或GCM这样的模式,这不是必需的。他们不需要/支持填充。
如果由于某种原因,您无法使默认的PKCS#5 / PKCS#7填充工作,您可以选择ZeroPadding,它只向块文本附加0x00字节,直到块的倍数为止达到了规模。这暗示原始明文不能以0x00字节结束,因为它们将在解密期间被删除。您当然可以使用任何类型的填充字节,只要它不可能在最后出现在明文中。