【发布时间】:2013-06-17 13:44:22
【问题描述】:
我正在使用以下方法从 nodejs 中的加密库创建一个加盐和散列的密码:
crypto.randomBytes(size, [callback])
crypto.pbkdf2(password, salt, iterations, keylen, callback)
对于 randomBytes 调用(创建 SALT)我应该使用什么大小?我听说过 128 位的盐,可能高达 256 位。看起来这个函数使用字节大小,所以我可以假设 32(256 位)的大小就足够了吗?
对于 pbkdf2 调用,什么是合适的迭代次数以及密钥 (keylen) 的合适长度是多少?
此外,对于存储,我已经看到将盐、长度、迭代和 derviedkey 存储在同一列中的示例。我正在使用一个将 4 分隔为 :: 的示例,即:
salt::derivedKey::keyLength::iterations
执行此操作后,我可以在 :: 上分离以获取 4 个值,因此我可以根据提供的密码生成派生密钥以查看它是否匹配。这是存储它的正确方法吗?还是我应该在结合这些价值观时更加“欺骗”一些?
【问题讨论】:
标签: node.js passwords pbkdf2 password-storage