当前位置: 首页 > 知识库问答 >
问题:

加密快车。js PBKDF2 HMAC-SHA1是否足够?

宗政欣可
2023-03-14

使用Express.js框架和密码与pbkdf2散列密码我读到默认算法是HMAC-SHA1,但我不明白为什么它没有升级到其他家族或SHA之一。

crypto.pbkdf2(password, salt, iterations, keylen, callback)

我们提供的keylen是我们想要的SHA的变体吗?像SHA-256,512等等?

HMAC如何改变输出?

最后,当SHA1断开时,它是否足够坚固?

抱歉,如果我把事情搞混了。

共有2个答案

陆臻
2023-03-14

SHA-1已损坏,但并不意味着使用不安全;SHA-256(SHA-2)或多或少是未来的证明和长期替代品。破碎只意味着比暴力更快,但不一定可行或切实可行。

另见此答案:https://crypto.stackexchange.com/questions/3690/no-sha-1-collision-yet-sha1-is-broken

函数被破坏通常只意味着我们应该开始迁移到其他更强大的函数,而不是说有实际的危险。攻击只会变得更强,所以一旦第一个裂缝开始出现,考虑其他方案是个好主意。

轩辕啸
2023-03-14

我们提供的keylen是我们想要的SHA的变体吗?像SHA-256,512等等?

当您声明您正在对密码进行散列时,@CodesInChaos是右-keylen(即PBKDF2输出的长度)最多是HMAC本机散列函数的位数。

  • 对于SHA-1,那是160位(20字节)
  • 对于SHA-256,这是256位(32字节),等等。
  • 这样做的原因是,如果你要求比哈希函数支持的更长的哈希(keylen),第一个本机长度是相同的,所以攻击者只需要攻击位。这是Hashcat团队发现并修复的问题1Password。

举例作为证明:

这里有22个字节的PBKDF2-HMAC-SHA-1-这是一个本机哈希大小2个字节(总共需要8192次迭代!-前4096次迭代生成前20个字节,然后我们再对集合进行4096次迭代!):

  • pbkdf2 sha1"密码""盐"4096 22
    • 4b007901b765489abead49d926f721d065a429c12e46

    这里只得到了PBKDF2-HMAC-SHA-1的前20个字节,即恰好一个本机散列输出大小(总共需要4096次迭代)

    • pbkdf2 sha1“密码”“salt”4096 20
      • 4b007901b765489abead49d926f721d065a429c1

      即使您存储了22个字节的PBKDF2-HMAC-SHA-1,攻击者也只需要计算20个字节。。。这需要大约一半的时间,为了得到字节21和22,计算另一组完整的HMAC值,然后只保留2个字节。

      • 是的,你是对的;对于PBKDF2-HMAC-SHA-1,21个字节的时间是20个字节的两倍,而实际上,40个字节的时间与21个字节的时间一样长。然而,41字节的长度是20字节的三倍,因为41/20介于2和3之间,是互斥的

      HMAC如何改变输出?

      HMAC RFC2104是一种为散列函数设置密钥的方法,特别是当您将密钥和文本简单地连接在一起时,这些函数具有弱点。HMAC-SHA-1是HMAC中使用的SHA-1;HMAC-SHA-512是HMAC中使用的SHA-512。

      最后,当SHA1断开时,它是否足够坚固?

      如果你有足够的迭代次数(2014年上万次到下几十万次或更多次),那么应该没问题。PBKDF2-HMAC-SHA-512尤其具有一个优势,即它在当前图形卡(即许多攻击者)上的性能比在当前CPU(即大多数防御者)上的性能差得多。

      对于黄金标准,请参阅@ThomasPornin在SHA-1密码存储安全吗中给出的答案?其中一小部分是“对MD4、MD5和SHA-1的已知攻击是关于碰撞的,不影响预映像抗性。已经表明,MD4有一些弱点,当试图打破HMAC/MD4时,可以(仅在理论上)利用这些弱点,但这并不适用于您的问题。Kesley和Schneier在论文中提出的2106秒前置映像攻击是一个通用的权衡,它只适用于非常长的输入(260字节;那是一百万太字节——注意106 60如何超过160;这就是你看到权衡没有什么魔力的地方在里面)。"

 类似资料:
  • 问题内容: 我对Swift还是比较陌生,我无法使用HMAC和SHA1进行加密 问题答案: 问题解决了!首先,我没有正确使用字符串函数…我最终得到了: 然后我忘记了我需要对hmac结果进行base64编码。所以我将问题中链接的字符串函数修改为… 这给了我正确的结果

  • 本文向大家介绍JS实现的base64加密、md5加密及sha1加密详解,包括了JS实现的base64加密、md5加密及sha1加密详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS实现的base64加密、md5加密及sha1加密。分享给大家供大家参考,具体如下: 1、base64加密 在页面中引入base64.js文件,调用方法为: 2、md5加密 在页面中引用md5.js文件,调用

  • 问题内容: 我需要将SHA1加密的文本反向转换为纯文本。 我需要Java代码。 许多论坛都说无法做到,但是我发现了一个链接http://www.stringfunction.com/sha1-decrypter.html,它的功能完全相同。我已经测试过了 现在我需要用Java实现的算法。 请帮忙!!! 问题答案: 根本不可能。像所有加密摘要算法一样,SHA1不是加密算法,而是哈希算法。只要需要,它

  • 问题内容: 根据标题,您是否找到了足以满足您需求的默认Java日志记录框架? 您是否使用替代日志记录服务,例如log4j或其他服务?如果是这样,为什么?我想听听您对有关不同类型项目中的日志记录要求的任何建议,以及在实际需要和/或有用时集成框架的建议。 问题答案: 使用第三方库记录依赖项 在大多数情况下,Java JDK日志记录本身并不足够。但是,如果您有一个使用多个开源第三方库的大型项目,您将很快

  • 本文向大家介绍asp实现的sha1加密解密代码(和C#兼容),包括了asp实现的sha1加密解密代码(和C#兼容)的使用技巧和注意事项,需要的朋友参考一下 在百度找的几个asp sha1(vbs写的)加密结果和asp.net的sha1加密结果不一样,asp.net sha1加密完后是40位,网上找的asp sha1加密是64位,还以为asp.net做了截取(如网上的asp的md5机密和asp.ne

  • 本文向大家介绍JavaScript SHA1加密算法实现详细代码,包括了JavaScript SHA1加密算法实现详细代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家介绍了JavaScript SHA1加密算法吗,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家有所帮助,希望大家继续关注呐喊教程的最新内容。