在您使用的任何持久性机制(数据库)中,您都将在哈希值和迭代次数之间存储结果哈希,这两者都是纯文本。如果每个密码使用不同的盐(您应该这样做),则还必须保存该信息。
然后,您将比较新的纯文本密码,使用相同的盐(和迭代次数)对其进行哈希处理,然后将字节序列与存储的密码进行比较。
生成密码(伪)
function hashPassword(password) { var salt = crypto.randomBytes(128).toString('base64'); var iterations = 10000; var hash = pbkdf2(password, salt, iterations); return { salt: salt, hash: hash, iterations: iterations };}验证密码(伪)
function isPasswordCorrect(savedHash, savedSalt, savedIterations, passwordAttempt) { return savedHash == pbkdf2(passwordAttempt, savedSalt, savedIterations);}


