一尘不染

DESede和TripleDES对于cipher.getInstance()的区别

java

我试图在Java中使用TripleDES加密。从维基百科的文章Keying Options,我想用选项1,其中All three keys are independent

密码文档,它说去参考指南这里,但它仍然是我不清楚。

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

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

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

两者都可以编译,所以有什么区别?我应该在另一个上使用吗?这两个都可以使用三个单独的键来工作吗?


阅读 540

收藏
2020-12-03

共1个答案

一尘不染

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

根据此页面,SunJCE
Triple DES实现支持选项#1和#2:

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

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

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

2020-12-03