cipher.getInstance()中DESede和TripleDES的区别

24
我正在尝试在Java中使用TripleDES加密。从Wikipedia文章密钥选项下,我想使用选项1,其中所有三个密钥都是独立的
Cipher文档中,它说要去参考指南,但对我来说仍然不太清楚。
我正在努力运行示例,并在不同的项目中使用这两行:
Cipher c = Cipher.getInstance("DESede");

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

这两个编译都没有问题,它们之间有什么区别?我应该选择其中一个吗?这两个方法都适用于使用三个独立的键吗?
1个回答

40
"TripleDES"在Sun JCE提供程序中只是"DESede"的别名-两者返回完全相同的密码。 "DESede"是标准名称,应该适用于每个Java平台,但实际上,“TripleDES”也可能得到广泛支持。
根据此页面,SunJCE Triple DES实现支持选项#1和#2:
Keysize必须等于112或168。 112的keysize将生成具有2个中间键的Triple DES密钥,而168的keysize将生成具有3个中间键的Triple DES密钥。
您应该始终在实例化密码时指定操作模式和填充,以使您的意图清晰。否则,实现可以自由选择,这可能会令人困惑。

5
DESede是3DES实现的描述性名称:DESede = DES-加密-解密-加密 = 三重DES。 - Bonewolf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接