c# - AES 托管提供程序默认值

标签 c# .net encryption

我们是一家 .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/

相关文章:

javascript - 匹配通用 URL 的正则表达式

c# - Json.Net - 如何仅在类型匹配时反序列化

c# - 永久修改App.config C#

php - 使用VB.net解密AES256加密字符串

javascript - 使用 Android 从 JavaScript 代码进行 AES 加密

c# - 如何在内存中创建一个文件,然后通过asp.net mvc + jquery将该文件发送给用户?

c# - 图表控件去除标签箭头

java - 显示错误字符代码值的函数

c# - 通过 ForMember 从自定义 map 中提取 AutoMapper 源名称

java - 无法从java中的 keystore 加载私钥