encryption - 为什么使用 3DES 和 Blowfish 而不是 AES

标签 encryption cryptography aes blowfish 3des

有人可以分别解释系统设计可以证明使用加密解决方案(如 3DES 和 Blowfish)的几种情况吗?

最佳答案

我将添加一些与向后兼容性相关的内容:如果您的硬件实现仅执行 3DES(许多较旧的智能卡),那么 3DES 可能优于 AES。硬件加速器可用于加速和安全(侧信道攻击,见下文)。

3DES 实现可能不太容易受到边信道攻击(尽管它肯定不能幸免)。 AES 更难正确 - 正如我所理解的那样 - 因为它是内部设计(表访问)。 AES 更好的算法、更大的 block 大小或 key 大小在面对良好的侧信道攻击时并不意味着什么。

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

我会在 Blowfish 上更短一些:可变 key 大小,有时比 AES 更快,不太可能在硬件中实现,但向后兼容性可能是原因,再次是 8 字节 block 大小。

当然,以上三个原因通常都不足以选择 3DES 或 Blowfish 而不是 AES。

关于encryption - 为什么使用 3DES 和 Blowfish 而不是 AES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9993793/

相关文章:

java - 加密 - 解密时数据错误

java - 在 Node 上生成 AES key

c# - 我应该如何为我的 AES 加密数据库条目导出 key 和初始化向量?

java - 使用 AES 和 Base64 编码进行加密和解密

c# - RC4 加密与预期不符

javascript - 使用Node的 'crypto'模块时是否需要使用 key 派生?

cryptography - RSA 签名是唯一的吗?

Java SecureRandom 声明应该是特定于静态类的,也可以是特定于实例的

ios - iOS加密的困惑

java - 使用凯撒密码对大数进行加密