对称加密算法之间的区别

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

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

谢谢你的任何启示。
托尼

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

  • Rijndael(通常称为AES )
  • 三重DES
  • DES
  • RC2

使用AES。

更多细节:

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

  • AES是DES的inheritance者,是美国联邦组织的标准对称加密算法(并且作为其他所有人的标准)。 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

简短回答: 使用Rijndael

各种选择是什么:

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

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

DES是数据加密标准,被称为强crpytography。 但是,密钥长度为56位,现在处于powershell解密范围内 。

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

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

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

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

它有一系列按键,但使用128位 非常重要 。 出于兼容性原因,仅使用其他密钥长度(包括最长的256位)。

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

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

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

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

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

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

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

Rijndael是最好的。

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

如果您有兴趣,请查看充气城堡加密库,了解更多c#加密的好处: http : //www.bouncycastle.org/

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

(最弱/最快)RC2

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