C#看起来有4种不同的对称加密算法:RijndaelManaged,DESCryptoServiceProvider,RC2CryptoServiceProvider和TripleDESCryptoServiceProvider。
我正在寻找他们之间的更多信息。主要是它们之间的差异。 MSDN没有多大帮助,或者我只是累了。 ;)我确信每个人之间都有利弊,就像有多种做事方式的事情一样。
感谢您的任何启示。
托尼
答案 0 :(得分:24)
这个排名(2015年)最强的算法出现在最上面:
使用AES。
更多细节:
通过级联三个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”类之间是否存在任何其他差异?