24 lines
914 B
JavaScript
24 lines
914 B
JavaScript
const crypto = require('crypto');
|
|
module.exports = {
|
|
// 随机数(盐值)
|
|
getRandomSalt() {
|
|
return Math.random().toString().slice(2, 5);
|
|
},
|
|
// 加密用户密码(原始密码,盐值)
|
|
// 密码同样是123456,由于采用了随机盐值,前后运算得出的结果是不同的。
|
|
// 这样带来的好处是,多个用户,同样的密码,攻击者需要进行多次运算才能够完全破解。
|
|
// 同样是纯数字3位短盐值,随机盐值破解所需的运算量,是固定盐值的1000倍。
|
|
cryptPwd(password, salt) {
|
|
|
|
// 密码“加盐”
|
|
const saltPassword = password + ':' + salt;
|
|
// 加盐密码的md5值
|
|
const md5 = crypto.createHash('md5');
|
|
return md5.update(saltPassword).digest('hex');
|
|
},
|
|
// 密码验证,如果验证通过 返回 true
|
|
cryptPwdVerification(password, salt, user_password_md5) {
|
|
return this.cryptPwd(password, salt) === user_password_md5;
|
|
},
|
|
}
|