AES(RijndaelManaged)解密额外字符?

时间:2012-07-06 15:25:20

标签: vb.net encryption .net-2.0 aes

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

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

1 个答案:

答案 0 :(得分:1)

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

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