DESede和TripleDES之间的差异cipher.getInstance()
我试图让TripleDES加密在Java中工作。 从Keying Options
下的Wikipedia文章中 ,我想使用选项1,其中All three keys are independent
。
从Cipher文档中可以看到这里的参考指南 ,但我仍然不清楚。
我正在努力让示例运行,并在不同的项目中使用这两行:
Cipher c = Cipher.getInstance("DESede"); Cipher cipher = Cipher.getInstance("TripleDES/ECB/PKCS5Padding");
编译都很好,那有什么区别? 我应该使用一个吗? 这两个都可以使用三个独立的键吗?
“TripleDES”只是Sun JCE提供程序中“DESede”的别名 – 两者都返回完全相同的密码。 “DESede”是应该适用于每个Java平台的标准名称,但在实践中,“TripleDES”也可能得到广泛支持。
根据此页面 ,SunJCE Triple DES实现支持选项#1和#2:
Keysize必须等于112或168。
密钥大小为112将生成具有2个中间密钥的Triple DES密钥,密钥大小为168将生成具有3个中间密钥的Triple DES密钥。
在实例化密码时,应始终指定操作模式和填充,以使您的意图清晰。 否则,实现可以自由选择,这可能会令人困惑。