当前位置: 首页 > 面试题库 >

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

李昱
2023-03-14
问题内容

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

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

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

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

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

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


问题答案:

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

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

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

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

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



 类似资料:
  • 在一个多线程Java应用程序中,我们使用AES-256对磁盘上的文件进行加密和解密。请注意,多个线程可以对不同文件的加密和解密方法进行并发调用。 加密:

  • 问题内容: 面向对象的编程语言和基于对象的编程语言之间有什么区别?JavaScript是面向对象还是基于对象? 问题答案: 维基百科说: 在计算机科学中,基于对象一词具有两种不同的含义: 某种程度上受限的面向对象编程,其中应用了以下一项或多项限制:(a)没有隐式继承,(b)没有多态性,(c)仅可用值的非常少的子集是对象(通常是GUI组件)。 基于原型的系统(即基于“原型”对象的系统,这些对象不是任

  • 我想知道两者的核心区别是什么 面向对象和基于对象的语言 我看过很多帖子他们都在说两件事 > 面向对象语言支持OOPs的所有特性,而基于对象的语言不支持OOPs的所有特性,如多态性和继承。 他们给出了基于对象的javascript和面向对象的java的例子 比如这篇stackoverflow的帖子 面向对象语言与基于对象语言的区别 但我想知道,无论使用何种语言,这两个概念之间的核心区别是什么。 找到

  • 问题内容: 我想知道两者之间的核心区别是什么 面向对象和基于对象的语言 我读过很多文章,所有人都说两件事 面向对象的语言支持OOP的所有功能,而基于对象的语言不支持OOP的所有功能,例如多态和继承。 他们给出了javascript作为基于对象和java作为面向对象的示例 像这个stackoverflow的帖子 面向对象和基于对象的语言之间的区别 但是我想知道这两种概念之间的核心区别是什么,而与任何

  • 问题内容: 好的,所以这可能是一个琐碎的问题,但是我在可视化和理解差异以及何时使用它们方面遇到困难。对于诸如单向和双向映射之类的概念如何影响一对多/多对多关系,我也还不清楚。我现在正在使用Hibernate,因此任何与ORM相关的解释都将有所帮助。 举例来说,我有以下设置: 那么在这种情况下,我将进行哪种映射?对于这个特定示例的答案肯定会受到赞赏,但我也确实希望获得何时使用一对多和多对多以及何时使

  • 最近在看JCTools的源码,在查看SPSC队列的时候,有个疑问, 既然producerIndex属性已经被volatile修饰了,为什么还有一个UNSAFE.getLong方法来获取,性能更高吗,为什么要这样取舍?