DESede 和 TripleDES for cipher.getInstance() 之间的区别

2022-09-01 22:55:19

我正在尝试让TripleDES加密在Java中工作。从维基百科文章下,我想使用选项1,其中.Keying OptionsAll three keys are independent

密码文档中,它说要去这里的参考指南,但我仍然不清楚。

我正在努力运行示例,并在不同的项目中使用这两行:

Cipher c = Cipher.getInstance("DESede");

Cipher cipher = Cipher.getInstance("TripleDES/ECB/PKCS5Padding");

两者编译良好,那么有什么区别呢?我应该使用一个而不是另一个吗?这两者都适用于使用三个单独的键吗?


答案 1

“TripleDES”只是 Sun JCE 提供程序中“DESede”的别名 – 两者都返回完全相同的密码。“DESede”是标准名称,应该适用于每个Java平台,但在实践中,“TripleDES”可能也得到了广泛的支持。

根据此页面,SunJCE Triple DES 实现支持选项 #1 和 #2:

键大小必须等于 112 或 168。

密钥大小为 112 将生成一个具有 2 个中间密钥的三重 DES 密钥,密钥大小为 168 将生成一个具有 3 个中间密钥的三重 DES 密钥。

在实例化密码时,应始终指定操作模式和填充,以明确您的意图。否则,实现可以自由做出选择,这可能会令人困惑。


答案 2

推荐