c# - 识别 AES 算法。是 AES 128 还是 AES 256?

标签 c# aes

我在 c# 中使用 AES 算法进行加密和解密。我使用 AesCryptoServiceProvider 类进行加密和解密。

这是我在代码中的设置

AesCryptoServiceProvider result = new AesCryptoServiceProvider();
result.BlockSize = 128;
result.KeySize = 256;
result.Mode = CipherMode.CBC;
result.Padding = PaddingMode.PKCS7;

我不太清楚我在这里使用的代码是 AES 128 还是 AES 256 的实现。

简单的问题是如何识别您使用的是 AES 256/AES 128?

我试过这个链接:http://social.msdn.microsoft.com/Forums/vstudio/en-US/ac5f4d30-343e-484e-b795-b214820a9327/aes-net-encryption-is-it-always-256-bit-aes

但我没有得到答案。

最佳答案

是AES 256,数字就是 key 大小。

来自 Wikipedia :

Strictly speaking, the AES standard is a variant of Rijndael where the block size is restricted to 128 bits.

所以 block 大小总是 128。


我无法向您指出任何官方文档,因为(据我所知)AES-<Number>一直是非官方的速记。我可以给你指点 Bruce Schneier Blog Post其中引用了一篇研究论文:

AES is the best known and most widely used block cipher. Its three versions (AES-128, AES-192, and AES-256) differ in their key sizes (128 bits, 192 bits and 256 bits) and in their number of rounds (10, 12, and 14, respectively). In the case of ...

尽管您的客户可能不喜欢该博文的其余部分,因为 Schneier 推荐 AES-128 而不是 AES-256。

关于c# - 识别 AES 算法。是 AES 128 还是 AES 256?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18351184/

相关文章:

c# - ContinueWith TaskContinuationOptions.OnlyOnFaulted 似乎没有捕获到从启动的任务中抛出的异常

c# - 我可以将 Int.TryParse 更改为在解析不成功时返回 -1 而不是零吗?

c# - 使用linq和相关实体查询 Entity Framework 7

encryption - 如何在 Openssl 中以十六进制生成输出?

java - AES/CBC/PKCS5Padding Java 加密错误 - javax.crypto.BadPaddingException : Given final block not properly padded

c# - .NET 实例化错误

c# - 从对话框窗口获取值

aes - 为什么 AES 的所有输入都必须是 16 的倍数?

java - 具有特定填充的 RSA 最大消息长度

c# - RijndaelManaged 支持 128-256 位 key ,默认构造函数生成器的 key 大小是多少?