0

因此,我使用RijndaelManaged类 (.NET 2.0) 对配置文件中的小字符串(大约十几个字符或更少)进行 AES-128 CBC 加密。除了当我解密数据时,填充字节没有被删除之外,我已经让一切正常工作了。我知道我可以选择不进行任何填充,但这是非常不安全的,并且需要添加填充字节,因为这就是 AES 的工作原理(以谨慎的块大小)。现在我正在使用PaddingMode.ISO10126CryptoStream自动附加加密随机字节。

处理此问题的行业标准方法是什么?在解密时摆脱这些“额外字节”的正确方法是什么?

4

1 回答 1

1

摆脱填充的最佳方法当然是使用 PKCS#7 填充,并让密码实例摆脱填充,正如 GregS 建议的那样。

现在执行加密的最佳方法是使用 CTR 模式加密,或者最好使用包含身份验证/完整性保护的密码,例如 GCM。请注意,对于小字符串,您需要注意不要通过密文的大小泄露信息(对“是”执行 CTR 模式加密的结果将导致三个字节,“否”将导致 2 个字节)。

于 2012-07-06T23:27:06.023 回答