Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 使用pbkdf2的SALT和HASH大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用以下方法从nodejs中的crypto lib创建一个salted和hashed密码:

crypto.randomBytes(size,[callBACk])
crypto.pbkdf2(password,salt,iterations,keylen,callBACk)

对于randomBytes调用(创建SALT)@R_489_10675@用什么大小?我听说过128位盐,可能高达256位。看起来这个函数使用一个字节的大小,@R_58_9447@假定一个32(256位)的大小是足够的?

对于pbkdf2调用,什么是好的迭代次数,什么是密钥(keylen)的好长度?

另外,为了存储,我看到了将salt,length,iterations和derviedkey存储在同一列中的例子。我正在使用一个将4乘以::分开的例子,即:

salt::derivedKey::keyLength::iterations

这样做,我可以在::上分离以获取4个值,因此我可以根据提供的密码生成派生密钥,以查看它是否匹配。这是正确的存储方式吗?或者我应该在结合这些价值观的时候再多一点“欺骗”吗?

@H_450_21@解决方法
随机字节大小:

盐应至少与散列函数大小相同,因此对于sha256,您应至少使用32个字节。 Node.js Crypto的pbkdf2使用SHA1,所以20个字节应该是最小的。但是,至少应该使用64位(8字节),如#3中所述。 (来源:https://crackstation.net/hashing-security.htm)。

2. PBKDF2迭代次数

参见this question进行很好的讨论。我从那里拿出了10.000的范围是没有冲击性能的,但这是硬件/性能依赖。

PBKDF2长度:

参见this other discussion关键长度。参数再次是使用散列函数,在您的情况下,SHA-1,所以20个字节是正确的值。由于PBKDF2’s Standard推荐使用至少64位的盐,因此生成小于输入值的键是一个浪费,因此至少要使用8个字节。不要使用大于20的输出长度,因为它不提供额外的安全性,而是为20的每个倍数计算时间的两倍。

4.如何存储变量:

在上述所有链接(特别是the first)中讨论,盐应该沿着密码保存(但不能在其他地方重复使用),通常通过先在结果字符串(salt:hash)中或在另一个数据库列中附加它们。

就其他变量而言,他们的知识对于违反安全性并不重要(如Kerckhoffs’s Principle所述,所以你可以在任何地方安全地参数化,你用“::”分隔它们的方式是很好的,但是你正在保存额外的信息Crackstation’s codes只保存“algorithm:iterations:salt:hash”,所以在你的情况下,“salt :: derivedKey :: iterations”就是你所需要的。

大佬总结

以上是大佬教程为你收集整理的node.js – 使用pbkdf2的SALT和HASH全部内容,希望文章能够帮你解决node.js – 使用pbkdf2的SALT和HASH所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:jssalt使用