algorithm - C# 中的 RijndaelManaged 类是不是等同于 AES 加密?
Posted
技术标签:
【中文标题】algorithm - C# 中的 RijndaelManaged 类是不是等同于 AES 加密?【英文标题】:algorithm - Is the RijndaelManaged Class in C# equivalent to AES encryption?algorithm - C# 中的 RijndaelManaged 类是否等同于 AES 加密? 【发布时间】:2013-06-14 20:17:42 【问题描述】:我问这个问题是为了确认 C# 中的 RijndaelManaged 类是否等同于 AES 加密。从我一直在阅读的内容来看,RijndaelManaged 是实现 AES 加密的首选算法。有人可以确认一下吗?
RijndaelManaged 算法是否可以安全地用于 Web 项目?谢谢:)
【问题讨论】:
我认为该算法可以用于AES加密 【参考方案1】:如果您想使用 AES,只需使用 AesManaged
类 - http://msdn.microsoft.com/en-us/library/system.security.cryptography.aesmanaged%28v=vs.100%29.aspx
您引用的 RijndaelManaged
类并不完全符合 AES 规范,主要是因为它提供了块大小的选项。 AesManaged
使用指定的 128 位块大小。
就网络项目的“安全”而言,它是一种非常强大的加密方法(据我所知,它从未被破坏过),但就像任何东西一样,它必须正确使用。
【讨论】:
谢谢 :) 那么 RijndaelManaged 是否比 AesManaged 更强大?我读过它可以支持 256 位的密钥大小。AesManaged
可以支持 256 位密钥 - msdn.microsoft.com/en-us/library/…
@Matthew RijndaelManaged 可以以与 AES 不兼容的方式使用,因此审查较少,应该认为安全性较低,所以不要使用它。
AesManaged 在 .net 2.0 框架中不可用。 .net 2.0 下唯一的选项是 RijndaelManaged,所以如果我们在 RijndaelManaged 中将 BLockSize 设置为 128,它应该相当于 AES 吧?
@seveleven - 不,不完全等价。【参考方案2】:
AES 算法是在 1997 年至 2000 年 NIST 举办的一场竞赛中被选中的。获胜者是一种名为 Rijndael 的算法。
NIST 指定 AES 算法具有 128 位块大小。由于 Rijndael 支持 128、160、192、224 和 256 位的块大小,因此最终的 AES 规范在这方面不同于原始的 Rijndael 规范。换句话说,“AES”和“Rijndael”是相同的算法,只是“AES”被限制为128位的块大小。
虽然块大小与密钥大小无关。所讨论的算法支持 128、192 和 256 位密钥。更长的密钥不一定“更强”,因为 AES 有一定的理论weaknesses。无论哪种方式,128 位密钥在可预见的未来都足够长。
正如 EkoostikMartin 所说,迄今为止,AES 是牢不可破的。但是密码学很难,即使是专业人士也不是每次都能正确完成。在不确切知道自己在做什么的情况下使用原始密码原语可能会导致一些不好的事情。换句话说,密码很少是“安全链”中最薄弱的环节。
【讨论】:
【参考方案3】:有一些区别,特别是可以更改块大小和密钥大小。 (据我所知,AES 使用 128 的固定块大小) 如果您在 Rijndael 中使用 CFB,则块大小将调整为反馈大小,这意味着您不能保证块大小为 128。
为了确保等效性,您必须使用 128 的块大小,并避免 CFB 或确保反馈大小也是 128。
另一件需要注意的事情:如果您使用带有 CFB 的静态 IV,那么您的密码将是确定性的。避免这种情况,因为前缀 IV 可以很容易地识别并用于解密您的数据。
(很抱歉提出一个旧线程,但这里没有此信息)
【讨论】:
以上是关于algorithm - C# 中的 RijndaelManaged 类是不是等同于 AES 加密?的主要内容,如果未能解决你的问题,请参考以下文章