I want to create a salt hash using node.js crypto lib without having to parse any hard-coded data.
What do I mean by hardcoded?
var salt, hardcodedString = "8397dhdjhjh"; crypto.createHmac('sha512', hardcodedString).update(salt).digest("base64");
Is there no other way how I can create a random string without using raw javascript, random functions or hardcoding?
Hi
UPDATE
var Crypto = require('crypto') , mongoose = require('mongoose'); module.exports = mongoose.model('User', new mongoose.Schema({ username: { type: String , required: true , index: { unique: true, sparse: true } , set: toLower }, email: { type: String , required: true , index: { unique: true, sparse: true } , set: toLower }, salt: { type: String , set: generateSalt }, password: { type: String , set: encodePassword } }),'Users'); function toLower(string) { return string.toLowerCase(); } function generateSalt() { //return Math.round((new Date().valueOf() * Math.random())) + ''; Crypto.randomBytes('256', function(err, buf) { if (err) throw err; return buf; }); // return Crypto.randomBytes('256'); // fails to } function encodePassword(password) { return password; // TODO: setter has no access to this.salt //return Crypto.createHmac('sha512', salt).update(password).digest("base64"); } function authenticate(plainPassword) { return encodePassword(plainPassword) === this.password; }
dev.pus
source share