Encryption 为什么用3DES和河豚代替AES

Encryption 为什么用3DES和河豚代替AES,encryption,cryptography,aes,blowfish,3des,Encryption,Cryptography,Aes,Blowfish,3des,有人能解释一下系统设计可以分别作为3DES和Blowfish使用加密解决方案的两种情况吗?只有一种情况:与需要它们的现有数据或服务/API的向后兼容性 否则保持简单,只需使用AES:-) 请注意,人们经常建议使用较旧的算法可以获得更好的性能(IMHO不是一个很好的折衷方案),但通常情况并非如此(您需要根据您使用的库进行测试),AES最终会更快(至少从3DES开始)。我要补充一些,一个与向后兼容性有关:如果您的硬件实现只执行3DES(许多较旧的智能卡),那么3DES可能比AES更受欢迎。硬件加速器

有人能解释一下系统设计可以分别作为3DES和Blowfish使用加密解决方案的两种情况吗?

只有一种情况:与需要它们的现有数据或服务/API的向后兼容性

否则保持简单,只需使用AES:-)


请注意,人们经常建议使用较旧的算法可以获得更好的性能(IMHO不是一个很好的折衷方案),但通常情况并非如此(您需要根据您使用的库进行测试),AES最终会更快(至少从3DES开始)。

我要补充一些,一个与向后兼容性有关:如果您的硬件实现只执行3DES(许多较旧的智能卡),那么3DES可能比AES更受欢迎。硬件加速器可用于加速和安全(侧通道攻击,见下文)

3DES实现可能不太容易受到侧通道攻击(尽管它肯定不能免疫)。正如我所理解的那样,AES很难做到正确,因为它的内部设计(表访问)。AES更好的算法、更大的块大小或密钥大小在遇到好的侧通道攻击时并不意味着什么

3DES的块大小为8字节,而AES的块大小为16字节,这可能会导致在块模式加密中使用3DES时产生更多的开销。当然,这个问题可以通过使用流模式密码来缓解,我们只讨论最后一个块的几个字节。出于这个原因,这是一个非常薄弱的论点

关于Blowfish,我会稍微简短一点:密钥大小可变,有时比AES快,不太可能在硬件中实现,但向后兼容性可能是原因,8字节块大小也是原因


当然,上述三个原因中的任何一个都不足以选择3DES或Blowfish而不是AES。

用3DES替换密钥添加子例程,这样四个八个字符块中的每个块都会被加密,并在DES函数F()中包括Blowfish F(),即在DES F()返回32位之前,事实上,我正利用这个想法创建一个数字生成器来尝试破解彩票,到目前为止,我已经赢了106.40英镑,很想上传代码,但无论如何在这里无法上传。

谢谢,但您能否解释两种情况,分别使用3DES而不是AES是合理的,除了向后兼容性之外,使用Blowfish代替AES?不是真的-但是你可以将向后兼容性分成几个变体,也可以扩展到它的极限。。。1您可能会找到需要它们的旧标准(主要是3DES),但到目前为止,它们都应该更新为需要AES(查找孤立标准;-),2您可能必须使用只支持DES/3DES的旧加密硬件(无法召回河豚的商业硬件,但它可能也存在)。Hi@dcriello,请注意,这更像是一个问题。