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

Jui*_*iCe 18 java encryption cryptography tripledes

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

Cipher文档中可以看到这里参考指南,但我仍然不清楚.

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

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

Cipher cipher = Cipher.getInstance("TripleDES/ECB/PKCS5Padding");
Run Code Online (Sandbox Code Playgroud)

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

nto*_*rnl 31

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

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

Keysize必须等于112或168.

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

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

  • DESede 是 3DES 实现的描述性名称:DESede = DES-Encrypt-Decrypt-Encrypt = Triple DES (4认同)