Last active
December 15, 2020 08:03
-
-
Save ilomon10/f4125f629f878795d9aab166b1172606 to your computer and use it in GitHub Desktop.
Hashing password with Crypto
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Ref: https://ciphertrick.com/salt-hash-passwords-using-nodejs-crypto/ | |
'use strict'; | |
var crypto = require('crypto'); | |
/** | |
* generates random string of characters i.e salt | |
* @function | |
* @param {number} length - Length of the random string. | |
*/ | |
var genRandomString = function(length){ | |
return crypto.randomBytes(Math.ceil(length/2)) | |
.toString('hex') /** convert to hexadecimal format */ | |
.slice(0,length); /** return required number of characters */ | |
}; | |
/** | |
* hash password with sha512. | |
* @function | |
* @param {string} password - List of required fields. | |
* @param {string} salt - Data to be validated. | |
*/ | |
var sha512 = function(password, salt){ | |
var hash = crypto.createHmac('sha512', salt); /** Hashing algorithm sha512 */ | |
hash.update(password); | |
var value = hash.digest('hex'); | |
return { | |
salt:salt, | |
passwordHash:value | |
}; | |
}; | |
function saltHashPassword(userpassword) { | |
var salt = genRandomString(16); /** Gives us salt of length 16 */ | |
var passwordData = sha512(userpassword, salt); | |
console.log('UserPassword = '+userpassword); | |
console.log('Passwordhash = '+passwordData.passwordHash); | |
console.log('nSalt = '+passwordData.salt); | |
} | |
saltHashPassword('MYPASSWORD'); | |
saltHashPassword('MYPASSWORD'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment