MCRYPT_RIJNDAEL_128
,MCRYPT_RIJNDAEL_256
,MCRYPT_BLOWFISH
等有什么区别?哪一个最适合网络上的数据传输?
答案 0 :(得分:19)
Rijandel是AES的另一个名称,AES是当前“一个很好的标准”算法。数字128或256是密钥长度。
Blowfish是一种较旧的64位分组密码(AES是128位分组密码)。
你不能说他们中的任何一个都是“更好”或“更糟”,因为它们都没有真正被打破,但一般来说AES应该更优越,大多数实现也更快。此外,最现代的CPU在硬件中支持AES,这将使其更快......所以没有理由 使用AES。
对于密钥长度,128位对于对称密码实际上是足够的。当然,除非您是贵国核武器代码的守护者,否则您将需要使用256位密钥。
请注意,如果要以合理的方式使用256位密钥,则需要大约40个字符的密码。这再次表明加密算法不是安全链中的薄弱环节,而是人类。
编辑:再想一想,对于256位密钥上所需的密码长度,50-60个字符可能是更合理的猜测。英语每个字符的熵小于2位。让我们假设你使用一个更随机的字母和数字字符序列(一个仍然能够记住它,虽然......),所以也许我们每个字符有4-5位熵(非常乐观!)。这将要求您输入51到64个字符,因此密码的熵大致与密钥匹配。
现在的问题是:我们中有多少人拥有50个字符的密码? : - )
<强>更新强>
截至2011年底,对Rijndael / AES(Bogdanov,Khovratovich,Rechberger)进行了一次关键恢复攻击,这不是“大多数理论上的”或“热闹的减少回合”类型的攻击之一。该攻击适用于全面的AES,比蛮力快4倍。因此,正式地,人们可能会认为Rijndael“被打破”
实际上,攻击迄今无关紧要。即使使用最短的支持密钥长度,攻击速度比暴力破解快四倍也需要2次 126 操作,即使使用大量硬件实现也是如此。但是,如果可以改进攻击,将来可能会发生变化。
答案 1 :(得分:3)
Rijndael和Blowfish都被认为是安全的。
MCRYPT_RIJNDAEL_128 vs MCRYPT_RIJNDAEL_256:
唯一的区别是块大小。您可以使用128位,192位或256位密钥
更大的钥匙需要更长时间才能发挥蛮力
因此,256位版本更加安全
注意:128位版本仍然需要大量时间时间来进行暴力破解。
目前Rijndael是高级加密标准:
http://en.wikipedia.org/wiki/Advanced_Encryption_Standard
AES通常比Blowfish快,因为:
- 算法本身对处理器(位与字节块)更有效
- Manny处理器支持AES的硬件加速。
结论:
- 所有三个选项都足够安全,可用于数据传输
- 选择取决于数据的“秘密”程度
- Rijndael使用范围更广,因此在某些情况下更易于实施。
答案 2 :(得分:2)
该问题的答案表明,对于MCRYPT_RIJNDAEL_128和MCRYPT_RIJNDAEL_256,“数字128或256是密钥长度” - 这是不正确的。这些数字指的是 blocksize ,而不是keylength。但是,这两种实现(使用128或256位的块大小)都可以接受128或256位的密钥。
答案 3 :(得分:1)
这取决于您想要的答案类型:实施方面的差异仅仅是编程问题,而设计上的差异通常是非常详细的数学证明。解释几种加密算法之间错综复杂的设计差异可能超出了本网站的范围。此外,每个算法都有弱点,有些已知,有些则没有。现有算法中的特定弱点通常会导致它们退役,但可以有办法解决它们(经典示例:DES有一个密钥子集导致容易破解的代码。解决方法是不使用这些密钥。)。
答案 4 :(得分:-1)
RSA是一种非对称加密算法,建议年份2030的最大密钥长度为2048 AES是建议年份2015年最大密钥大小为256位的对称算法,Serpent加密算法也是对称算法,密钥大小为256,建议年份为2015年。