DESede和TripleDES之间的差异cipher.getInstance()

时间:2013-06-24 16:12:38

标签: java cryptography encryption tripledes

我正在尝试使用Java进行TripleDES加密。从Keying Options下的Wikipedia article,我想使用选项1,其中All three keys are independent

从它所说的Cipher docs转到reference guide here,但我仍然不清楚。

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

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

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

两者编译都很好,那有什么区别?我应该使用其中一个吗?这两种方法都可以使用三个独立的键吗?

1 个答案:

答案 0 :(得分:30)

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

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

  

Keysize必须等于112或168.

     

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

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