我们是一家 .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,所以这些可能只是代表不同的系统默认值。
最佳答案
AES 的 block 大小是“不可协商的”,这是标准规定的。 模式欧洲央行不会再做了。不。 CBC 很好,但需要填充,因此您可以使用 CFB 或 OFB 模式,或计数器模式 如果随机访问很重要。仅当纯文本的格式和/或上下文决定了纯文本的有效长度时,才可以使用零填充,否则请避免使用它:PKCS7 是唯一可解码的。
关于c# - AES 托管提供程序默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5249558/