对称加密算法之间的差异

时间:2009-03-16 03:17:08

标签: c# encryption rijndaelmanaged

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

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

感谢您的任何启示。
托尼

7 个答案:

答案 0 :(得分:24)

这个排名(2015年)最强的算法出现在最上面:

使用AES。

更多细节:

  • DES是七十年代以来的旧“数据加密标准”。它的密钥大小太短,无法获得适当的安全性(56个有效位;这可以是强制性的,正如已经证明的more than ten years ago)。此外,DES使用64位块,当使用相同的密钥加密几千兆字节的数据时,这会产生一些潜在的问题(现在千兆字节不是那么大)。
  • 通过级联三个DES实例(具有不同的键),3DES是重用DES实现的技巧。 3DES被认为至少在“ 2 112 ”安全性方面是安全的(这是相当多的,并且在“不能用今天的技术破解”的范围内相当远) )。但它很慢,特别是在软件方面(DES专为高效的硬件实现而设计,但它在软件方面很糟糕;而且3DES吸收了三倍)。

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

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

请注意,分组密码是一个加密“块”(使用AES的128位数据块)的框。在加密可能长于128位的“消息”时,必须将消息拆分为块,并且实际进行拆分的方式称为mode of operation或“链接”。天真模式(简单拆分)称为ECB并存在问题。正确使用分组密码并不容易,而且比在AES或3DES之间进行选择更为重要。

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

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

答案 1 :(得分:15)

简短回答: 使用Rijndael

各种选择是什么:

RC2是一个建于80年代后期出口的弱密码,因为当时美国公司被限制出口“强”加密。它的密钥长度为40位,这使得它在今天的硬件上变得非常简单(毕竟,20年之后)。

它的名字代表Rivest Cipher No. 2,它的创始人Ron Rivest(世界着名的crpytographer,RSA中的'R')。

DES是数据加密标准,被称为强crpytography。但是,密钥长度为56位,现在为within range of brute-force decryption

3DES正在运行DES三次。实际上,只运行DES两次并不会让它变得更强,但第三次。它实际上是116位加密(使用196位密钥)。

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

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

然而,Rijndael是现代密码的首选。它是DES的官方替代品,称为Advanced Encryption Standard (AES)

它包含一系列密钥,但 使用128位 important。出于兼容性原因,仅使用其他密钥长度(包括最长的256位)。

答案 2 :(得分:3)

确实,因为陈述DES不是很强大。三重DES非常强大(AFAIK没有对它进行任何适当的攻击),但它有点慢。

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

不幸的是,我对RC2知之甚少。除非Rijndael明显更快,否则我没有理由不去Rijndael(即使那时我也想看看它有多安全。)

以下是推测...... RC2是几代RC6的祖先,RC6是选择一种名为AES的密码的决赛选手之一。 Rijndael被选中超过RC6,所以人们会认为Rijndael比RC2好几度。

答案 3 :(得分:1)

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

DES的主要弱点是shorter keylength可能允许可能的暴力攻击。使用DES进行三次加密是增强最终结果的可能方法,因此TripleDES。我对RC2了解不多,所以我无法对这种方法发表评论。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

Rijndael是最好的。

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

如果您有兴趣,请查看充气城堡加密库以获取更多c#加密优势: http://www.bouncycastle.org/

答案 6 :(得分:0)

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

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

我对API不熟悉,“Managed”和“CryptoServiceProvider”类之间是否存在任何其他差异?