के साथ यादृच्छिक-नमक-हैश कैसे बनाएं I किसी भी हार्डकोड किए गए डेटा को पार्स किए बिना node.js crypto lib का उपयोग करके नमक-हैश बनाना चाहते हैं।क्रिप्टो
हार्डकोडेड के साथ मेरा क्या मतलब है?
var salt, hardcodedString = "8397dhdjhjh";
crypto.createHmac('sha512', hardcodedString).update(salt).digest("base64");
वहाँ किसी अन्य तरीके से कैसे मैं कच्चे जावास्क्रिप्ट, यादृच्छिक कार्यों का उपयोग कर या कुछ हार्डकोड बिना एक यादृच्छिक स्ट्रिंग बना सकते हैं नहीं है?
सादर
अद्यतन
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;
}
बीटीडब्ल्यू सादा एचएमएसी कोई सुरक्षित पासवर्ड हैश नहीं है। 50000 पुनरावृत्तियों के साथ 'crypto.pbkdf2' एक सभ्य पसंद है। – CodesInChaos
^- जिसे उन लोगों के लिए ['stretching'] कहा जाता है (http://throwingfire.com/storing-passwords-securely/) जिन्हें पता नहीं है। –
बहुत अच्छा लिंक। एक ऐसी पोस्ट ढूंढना अच्छा होता है जिसमें विषय के बारे में पूरी जानकारी हो और अच्छी व्याख्या हो। –