我们是一家.net商店,并使用AesManaged提供商实施了一些解决方案。现在我们需要与第三方交换一些数据,他们提出了一个使用AES提供商的非默认设置的解决方案。
.NET默认值:
BlockSize = 128;
Mode = System.Security.Cryptography.CipherMode.CBC;
Padding = System.Security.Cryptography.PaddingMode.PKCS7;
供应商建议的设置:
BlockSize = 128;
Mode = CipherMode.ECB;
Padding = PaddingMode.Zeros;
我的问题:默认设置是否足够好?我们为什么要考虑更改任何这些设置。应该注意的是,我不确定他们是否使用.NET,因此这些可能只代表不同的系统默认值。
答案 0 :(得分:3)
AES的Blocksize是“不可协商的”,这是标准规定的内容。 模式ECB将不再发生。别。 CBC很好,但需要填充,因此您可以使用CFB或OFB模式或计数器模式 如果随机访问很重要。如果纯文本和/或上下文的格式确定明文的有效长度是什么,则零填充是正常的,否则避免它:PKCS7是唯一可解码的。
答案 1 :(得分:1)
.NET默认值应该足够好。供应商设置不太安全。 ECB seems to be less secure