我需要使用AES加密数据。在研究过程中,我发现了AesCryptoServiceProvider类。

我对加密知之甚少,我也不知道初始化向量(IV)是什么,因此我尝试在堆栈溢出中搜索AES示例,这导致我进入this question

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

最佳答案

AES基于Rijndael,但块大小限制为128位。 Rijndael支持更大范围的块大小,许多密码库提供了单独的Rijndael实现来补充AES。



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

关于类之间的差异:AesManaged仅使用块大小设置为128的RijndaelManagedAesManagedRijndaelManaged不符合FIPS,如果使用FIPS组策略标志,则ojit_code和ojit_code会引发异常。 .NET Framework 4.6.2(2016年8月)添加了AesCng类,该类是AES算法的CNG版本的实现。

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

09-10 15:18