28

我问这个问题是为了确认 C# 中的 RijndaelManaged 类是否等同于 AES 加密。从我读到的内容来看,RijndaelManaged 是实现 AES 加密的首选算法。有人可以确认一下吗?

RijndaelManaged 算法是否可以安全地用于 Web 项目?谢谢 :)

4

3 回答 3

42

AES 算法是在 1997 年至 2000 年间 NIST 举办的一场比赛中被选中的。获胜者是一个名为 Rijndael 的算法。

NIST 指定 AES 算法具有 128 位块大小。由于 Rijndael 支持 128、160、192、224 和 256 位的块大小,因此最终的 AES 规范在这方面不同于原始的 Rijndael 规范。换句话说,“AES”和“Rijndael”是相同的算法,除了“AES”被限制为128位的块大小。

块大小与密钥大小无关。有问题的算法支持 128、192 和 256 位密钥。更长的密钥不一定“更强”,因为 AES 有一定的理论弱点。无论哪种方式,128 位密钥在可预见的未来都足够长。

正如 EkoostikMartin 所说,迄今为止,AES 是牢不可破的。但是密码学很难,即使是专业人士也不是每次都能正确完成。在不确切知道自己在做什么的情况下使用原始加密原语可能会导致一些不好的事情。换句话说,密码很少是“安全链”中最薄弱的环节。

于 2013-06-19T06:31:05.327 回答
7

如果您想使用 AES,只需使用AesManaged该类 - http://msdn.microsoft.com/en-us/library/system.security.cryptography.aesmanaged%28v=vs.100%29.aspx

您引用的RijndaelManaged类并不完全符合 AES 规范,主要是因为它提供了块大小的选项。AesManaged使用指定的 128 位块大小。

就 Web 项目的“安全性”而言,它是一种非常强大的加密方法(据我所知,它从未被破坏过),但就像任何东西一样,它必须正确使用。

于 2013-06-18T14:55:28.233 回答
1

有一些差异,特别是更改块大小和密钥大小的能力。(据我所知,AES 使用 128 的固定块大小)
如果您在 Rijndael 中使用 CFB,则块大小将调整为反馈大小,这意味着您不能保证块大小为 128。

为了确保等效性,您必须使用 128 的块大小,并且要么避免 CFB,要么确保反馈大小也是 128。

另一件需要注意的事情:如果您使用带有 CFB 的静态 IV,那么您的密码将是确定性的。避免这种情况,因为前缀 IV 可以很容易地识别并用于解密您的数据。

(很抱歉提出一个旧线程,但此信息不在此处)

于 2018-01-12T11:46:23.800 回答