c# - RijndaelManaged 与 AesCryptoServiceProvider(AES 加密)

标签 c# .net encryption aes

我需要使用 AES 加密数据。在研究时我发现了 AesCryptoServiceProvider类。

我对加密知之甚少,也不知道初始化向量 (IV) 是什么,所以我尝试在堆栈溢出中搜索 AES 示例,结果找到了 this question .

为什么堆栈溢出链接使用RijndaelManaged类?是RijndaelManagedAesCryptoServiceProvider类做同样的事情?

最佳答案

AES 基于 Rijndael,但 block 大小限制为 128 位。 Rijndael 支持更广泛的 block 大小,许多加密库提供单独的 Rijndael 实现来补充 AES。

Block sizes of 128, 160, 192, 224, and 256 bits are supported by the Rijndael algorithm, but only the 128-bit block size is specified in the AES standard. [Wikipedia]

您链接到 RijndaelManaged 类。 AES 的等效类是 AesManaged .

关于类之间的区别:AesManaged 仅使用 block 大小设置为 128 的 RijndaelManagedAesManagedRijndaelManaged 不符合 FIPS,如果设置了 FIPS 组策略标志,则在使用时会抛出异常。 .NET Framework 4.6.2(2016 年 8 月)添加了 AesCng类,CNG 的实现AES 算法的版本。

An IV是一段随机数据,长度等于 block 大小,这是某些对称操作模式(例如 CBC 模式)所需要的。通常,IV 与第一个明文 block 或第一个密文 block 组合(异或)。这个想法是为了确保使用相同的 key 对相同的消息加密两次不会导致相同的输出。

关于c# - RijndaelManaged 与 AesCryptoServiceProvider(AES 加密),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13486109/

相关文章:

c# - 添加对 dll 的引用与在 .NET Standard 项目中添加 NuGet 包

必须学习的.net技术

asp.net - 加密/解密 "classic"ASP 和 ASP.NET 2.0 中的数据

python - 如何在python中使用RSA私钥加密数据?

c# - 日期时间.ParseExact : "String not recognised as a valid DateTime"

c# - 使用FileHelperAsyncEngine崩溃无一异常(exception)

c# - 为什么编译器不提示数组或对象初始值设定项中有额外的 ','?

c# - Windows 窗体内存泄漏

encryption - VNC 定义了哪些协议(protocol)代码? (RFB 协议(protocol))

c# - 我可以绑定(bind)到实用程序类吗?