17

C# 看起来有 4 种不同的对称加密算法:RijndaelManaged、DESCryptoServiceProvider、RC2CryptoServiceProvider 和 TripleDESCryptoServiceProvider。

我正在寻找他们之间的更多信息。主要是他们每个人之间的区别是什么。MSDN 没有太大帮助,或者我只是累了。;) 我确信它们之间各有利弊,就像有多种做事方式的任何事情一样。

感谢您的任何启发。
托尼

4

7 回答 7

27

这是排名(2015 年)最强的算法出现在顶部:

使用 AES。

详细信息:

  • DES 是七十年代的旧“数据加密标准”。它的密钥长度太短,无法保证适当的安全性(56 个有效位;这可以是暴力破解的,正如十多年前所证明的那样)。此外,DES 使用 64 位块,这在使用相同密钥加密数 GB 数据时会引发一些潜在问题(现在 1 GB 并没有那么大)。
  • 3DES 是一种重用 DES 实现的技巧,通过级联 DES 的三个实例(具有不同的密钥)。3DES 被认为是安全的,至少达到“ 2 112 ”安全性(这是相当多的,并且在“用今天的技术无法破解”的领域中相当远)。但它很慢,尤其是在软件方面(DES 是为高效的硬件实现而设计的,但它在软件方面很糟糕;而 3DES 的速度是后者的三倍)。

  • AES 是 DES 的继任者,作为美国联邦组织的标准对称加密算法(也作为几乎所有其他人的标准)。AES 接受 128、192 或 256 位的密钥(128 位已经非常牢不可破),使用 128 位块(所以没有问题),并且在软件和硬件方面都很高效。它是通过几年来数百名密码学家参与的公开竞争选出的。基本上,你不能有比这更好的了。

因此,如有疑问,请使用 AES。

请注意,块密码是一个加密“块”(使用 AES 的 128 位数据块)的盒子。在对可能超过 128 位的“消息”进行加密时,必须将消息拆分为块,而您进行拆分的实际方式称为操作模式或“链接”。朴素模式(简单拆分)被称为 ECB 并且存在问题。正确使用分组密码并不容易,它比在 AES 或 3DES 之间进行选择更重要。

http://en.wikipedia.org/wiki/EFF_DES_cracker

http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation

于 2009-03-16T04:35:22.390 回答
16

简短回答:使用 Rijndael

各种选项是什么:

RC2是 80 年代后期建立的用于出口的弱破密码,因为当时美国公司被限制出口“强”加密。它的密钥长度为 40 位,这使得在今天的硬件上强制使用它变得微不足道(毕竟,20 年后)。

它的名称代表 Rivest Cipher No. 2,以它的创建者 Ron Rivest(世界著名的密码学家,RSA 中的“R”)命名。

DES是数据加密标准,被称为强密码术。但是,对于 56 位的密钥长度,它现在处于蛮力解密的范围内

3DES运行 DES 三次。实际上,仅运行 DES 两次并不会使其变得更强大,但第三次确实如此。它实际上是 116 位加密(使用 196 位密钥)。

按照今天的标准,3DES 是一种非常好的、强大的加密。

因此 RC2、DES 和 3DES 都在密码套件中,以提供与使用这些密码的业务系统的兼容性。

然而,Rijndael 是首选的现代密码。它是 DES 的官方替代品,称为高级加密标准 (AES)

它有多种键大小,但使用128-bit很重要。出于兼容性原因,仅使用其他密钥长度(包括最长的 256 位)。

于 2010-02-01T07:56:07.307 回答
3

确实如前所述,DES 不是很强大。三重 DES 很强大(AFAIK 没有针对它进行任何适当的攻击),但速度有点慢。

Rijndael 与 AES(高级加密标准 - 由 NSA 批准,非常强大)相同,但在密钥大小方面有更多选择。

不幸的是,我对 RC2 也知之甚少。除非它比 Rijndael 快得多,否则我没有太多理由不选择 Rijndael(即使那样我也想看看它有多安全。)

以下是猜测... RC2 是几代 RC6 的祖先,RC6 是选择命名为 AES 的密码的决赛选手之一。Rijndael 比 RC6 更胜一筹,因此人们会认为 Rijndael 比 RC2 好几度。

于 2009-03-16T03:43:29.350 回答
1

我会坚持使用RijndaelManaged或 TripleDES,因为它们比 DES 更强大。

DES 的主要弱点是其较短的密钥长度,这可能允许可能的暴力攻击。使用 DES 进行三次加密是加强最终结果的一种可能方法,因此是 TripleDES。我对 RC2 了解不多,所以我无法评论该方法。

于 2009-03-16T03:21:21.570 回答
1

除非您有充分的理由不这样做,否则请使用 RijndaelManaged。Rijndael 变成了 AES,是 DES 的一般替代品,因此它绝对比 DES 和 TripleDES 更受欢迎,除非您需要与一些旧的基于 DES 的系统兼容。RC2 没有什么特别的问题,但它比 AES 更老,并且没有真正的理由使用它。

于 2009-03-16T03:46:25.300 回答
1

Rijndael是最好的。

DES 不是很好,很容易用足够的马力破解。三重 DES 比 DES 好一点(它只是 DES 重复了 3 次)。

如果您有兴趣,请查看 bouncy castle 加密库以获得更多 c# 加密优点:http: //www.bouncycastle.org/

于 2009-03-16T03:54:31.913 回答
0

这些算法代表速度与强度权衡曲线上的各个点。

(最弱/最快)RC2 < DES < 3DES < AES/Rijndael(最强/最慢)

不过,我不熟悉 API,“Managed”和“CryptoServiceProvider”类之间是否还有其他区别?

于 2009-03-16T04:31:44.193 回答