RijndaelManaged vs AesCryptoServiceProvider (AES Encryption)



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

我对加密知之甚少,也不知道初始化向量(IV)是什么,所以我尝试在堆栈溢出中搜索AES示例,这就引出了这个问题。

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

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

Rijndael算法支持128、160、192、224和256位的块大小,但AES标准中仅指定了128位的块尺寸。[维基百科]

您链接到了RijndaelManaged类。AES的等价类是AesManaged

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

IV是一段随机数据,长度等于块大小,这是某些对称操作模式(例如CBC模式)所需的。通常,IV与明文的第一块或密文的第一块组合(XOR)。其思想是确保使用相同的密钥对同一消息加密两次不会产生相同的输出