const crypto = require('crypto'); const shortid = require('shortid'); 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; }, // 返回随机短uuid shortid() { return shortid.generate() }, }