22

我正在尝试让 TripleDES 加密在 Java 中工作。在Wikipedia下的文章中Keying Options,我想使用选项 1,其中All three keys are independent.

Cipher 文档中,它说要转到此处的参考指南,但我仍然不清楚。

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

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

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

两者都编译得很好,那么有什么区别?我应该使用其中一个吗?这两个都适用于使用三个单独的键吗?

4

1 回答 1

38

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

根据this page,SunJCE Triple DES 实现支持选项#1 和#2:

密钥大小必须等于 112 或 168。

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

在实例化密码时,您应该始终指定操作模式和填充以明确您的意图。否则,实现可以自由选择,这可能会造成混淆。

于 2013-06-24T17:28:39.843 回答