识别AES算法.是AES 128还是AES 256

本文关键字:AES 还是 算法 识别 | 更新日期: 2023-09-27 18:28:22

我使用AES算法进行加密&c#中的解密。我使用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算法.是AES 128还是AES 256

它是AES 256。数字是键的大小。

来自维基百科:

严格地说,AES标准是Rijndael的变体,其中块大小被限制为128位。

因此块大小总是128。


我不能向您指出任何官方文档,因为(据我所知)AES-<Number>一直是非官方的缩写。我可以在Bruce Schneier的博客文章中引用一篇研究论文:

AES是最著名和使用最广泛的分组密码。它的三个版本(AES-128、AES-192和AES-256)的密钥大小(128位、192位和256位)和轮次(分别为10、12和14)不同。假使

尽管你的客户可能不喜欢这篇博客文章的其余部分,因为Schneier建议使用AES-128而不是AES-256。

AES的官方规范是FIPS-1997。它包含以下关于键大小和块大小的文本。
1. Introduction
This standard specifies the Rijndael algorithm ([3] and [4]), a symmetric block cipher that can
process data blocks of 128 bits, using cipher keys with lengths of 128, 192, and 256 bits.
Rijndael was designed to handle additional block sizes and key lengths, however they are not
adopted in this standard.
Throughout the remainder of this standard, the algorithm specified herein will be referred to as
“the AES algorithm.” The algorithm may be used with the three different key lengths indicated
above, and therefore these different “flavors” may be referred to as “AES-128”, “AES-192”, and
“AES-256”.

由于NIST在比赛后选择Rijndael作为AES,您无法获得更权威的参考。

请注意,尽管您的代码也包含CBC和PKCS#7填充,但它们不是AES规范的一部分。CBC是NIST批准的分组密码操作模式(见NIST SP 800-38A)。该规范还提到,NIST没有考虑填充方案,可能是因为它们不应被用作提供任何安全性的算法(即块密码模式)。