我正在尝试使用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");
两者编译都很好,那有什么区别?我应该使用其中一个吗?这两种方法都可以使用三个独立的键吗?
答案 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密钥。
在实例化密码时,应始终指定操作模式和填充以使您的意图清晰。否则,实施可以自由选择,这可能会令人困惑。