You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
798 B
JavaScript
28 lines
798 B
JavaScript
const crypto = require('crypto');
|
|
|
|
module.exports = {
|
|
_b64encode: (str) => Buffer.from(str).toString('base64'),
|
|
_b64decode: (str) => Buffer.from(str, 'base64').toString(),
|
|
_md5: (str) => crypto.createHash('md5').update(str).digest('hex'),
|
|
_sha1: (str) => crypto.createHash('sha1').update(str).digest('hex'),
|
|
/**
|
|
* @param {string} password
|
|
* @param {string} salt
|
|
* @param {string} hash
|
|
*/
|
|
check(password, salt, hash) {
|
|
return hash === this.hash(password, salt);
|
|
},
|
|
/**
|
|
* @param {string} password
|
|
* @param {string} salt
|
|
*/
|
|
hash(password, salt) {
|
|
const res = crypto.pbkdf2Sync(password, salt, 100000, 64, 'sha256');
|
|
return res.toString('Hex');
|
|
},
|
|
salt() {
|
|
return String.random();
|
|
},
|
|
};
|