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

PBEKeySpec迭代计数和keyLength参数有什么影响?

齐栋
2023-03-14
问题内容

深入研究Java加密和哈希世界,我看到了PBEKeySpec类的构造函数示例,其中包含iterationCount和和keyLength参数的各种值。似乎没有任何东西可以解释这些参数的影响或含义。

我假设这keyLength是密钥的长度,因此32位加密将为密钥长度取32的值,但是这种假设感觉不对。我的猜测iterationCount是对每个字符进行加密的次数,同样,在这种假设下也不会感到爱。

信息链接或说明,不胜感激。


问题答案:

迭代次数是派生对称密钥期间对密码进行哈希处理的次数。数字越大,验证密码猜测然后导出正确密钥的难度就越大。它与盐一起使用,用于防止使用彩虹表的攻击。迭代次数应尽可能高,而不会降低您自己的系统的速度。迭代计数的一个更通用的术语是
工作因子

密钥长度是导出的对称密钥的 以位
为单位的长度。DESede密钥的长度可以为128或192位,包括奇偶校验位。AES密钥的长度可以为128、192或256位。问题在于API没有指定要使用的密钥长度(位/字节,带或不带奇偶校验);为PBEKeySpec密钥大小是位,包括如本节中示出的奇偶校验位。

密钥派生功能通常仅输出“足够”的随机位,因此这就是为什么您仍可以指定所需的密钥大小的原因。

笔记:

  • 有关更多信息,请查看标准,PKCS标准往往相对容易阅读。
  • 盐只需要独特即可;通常,这是通过使用安全随机数生成器(对于Java而言,使用new SecureRandom(),然后再创建)创建64到256位的完全随机盐来实现的nextBytes(int amount)。盐可以是公开的,并可以与密文或密码哈希一起存储。
  • 为密钥大小指定任何大于散列输出大小的值(默认情况下为SHA-1,输出大小为160位)可能会失败(对于PBKDF1)或导致其他速度变慢(对于PBKDF2)。不建议; 只需在算法规范中使用哈希函数,例如SHA-256,SHA-512。
  • SHA-1(有时因为从未使用过SHA-0而被称为SHA), 甚至 MD5仍对这种功能完全安全(因为它不依赖于碰撞抵抗力),但您仍应选择更安全的选择,例如对于新协议,则为SHA-256或SHA-512。


 类似资料:
  • 我想知道是否有方法将与字节数组参数一起使用。 请找到以下文档的链接: http://docs.oracle.com/javase/1.7/docs/api/javax/crypto/spec/pbekeyspec.html)

  • 问题内容: 我有一个定义两个重载方法的类 显然它们是不同的,尤其是。 两者之间有什么区别? 如何调用第一个方法?我正在使用-这正确吗? 问题答案: 第一个函数是单个参数的函数,必须提供该参数,并且只能有效地采用value 。除null以外的任何值都不会编译。第二个函数不接受任何参数,传递给它也不会编译。

  • 问题内容: 我正在关注Go教程,由于无法理解特定的方法签名而陷入困境: 该文档解释如下: 该方法的签名如下:“这是一个名为save的方法,它的接收方p是指向Page的指针。它不带参数,并且返回错误类型的值。” 我不明白接收器是什么。我将其作为参数读取,但随后我期望参数位于中。 问题答案: 接收者是声明方法的对象。 要向对象添加方法时,请使用此语法。 例如:http://play.golang.or

  • 我是新的阿帕奇Kafka,并尝试与例子给出。 下面的代码片段用于初始化一个ConsumerConnector,我被topic count参数搞糊涂了;它似乎会导致Kafka为该主题提供相应数量的流。然而,我尝试了几次,只有第一个流产生消息。所以,有两个问题:1。如何确定主题的计数数?2.消息分裂是如何跨越流的? 提前道谢。

  • Python 为< code>dis.dis函数引入了两个新参数,即< code>show_caches和< code>adaptive。 这个参数在python 3.11中是什么意思?。我确实通过将其设置为来检查结果,但结果与将其设置为相同。

  • 问题内容: 此选项在docker文件中有什么作用? 如果没有此参数,docker容器会启动吗?我检查了一篇文章说 启用内存支持 但我仍然不清楚。 问题答案: 是。容器将以开头。 用于分配更大部分的内存。 为了防止JVM在容器中运行时调整最大堆大小,请设置 。 除此之外,https://www.eclipse.org/openj9/docs/xxusecontainersupport/可能会有所帮助