2013-10-07 8 views
22

मैं वर्तमान में नोडजेएस में एन्क्रिप्शन और पासवर्ड सुरक्षा के बारे में सीख रहा हूं। मैं वर्तमान उदाहरण के साथ काम कर रहा हूं जो वर्तमान में पीबीकेडीएफ 2 का उपयोग कर रहा है, मैं इसे इसके बजाय SHA256 का उपयोग करने के लिए स्विच करना चाहता हूं। क्या यह संभव है और/या समझ में आता है? मैं इसके बारे में कैसे जाऊं?नोडजेएस - SHA256 पासवर्ड एन्क्रिप्शन

var crypto = require('crypto'); 

var len = 128; 

var iterations = 13000; 

module.exports = function (pwd, salt, fn) { 
    if (3 == arguments.length) { 
    crypto.pbkdf2(pwd, salt, iterations, len, fn); 
    } else { 
    fn = salt; 
    crypto.randomBytes(len, function(err, salt){ 
     if (err) return fn(err); 
     salt = salt.toString('base64'); 
     crypto.pbkdf2(pwd, salt, iterations, len, function(err, hash){ 
     if (err) return fn(err); 
     fn(null, salt, hash); 
     }); 
    }); 
    } 
}; 
+1

यह आपको मदद मिल सकती है http://stackoverflow.com/questions/13714103/hashing-a-password-using-sha256-and-net -node-js –

+1

यह पासवर्ड हैशिंग का एक अच्छा सारांश है: https://crackstation.net/hashing-security.htm – ntoskrnl

+0

https://www.npmjs.com/package/sha256 इस मॉड्यूल की जांच करें – James111

उत्तर

45

तो sha256 हैश उत्पन्न करने के लिए चाहता था, तो आप उन लोगों के रूप पुनरावृत्तियों और लंबाई संपत्ति छोड़ करना होगा pbkdf2 लिए विशिष्ट हैं। फिर आप crypto.createHash() का उपयोग करेंगे जो हैश उत्पन्न करने के लिए ओपनएसएसएल का उपयोग करता है। ऐसा कहा जा रहा है कि आपके द्वारा जेनरेट किए जा सकने वाले हैंश के प्रकार ओपनएसएसएल के संस्करण पर निर्भर हैं जिन्हें आपने इंस्टॉल किया है।

var crypto = require('crypto'); 
var hash = crypto.createHash('sha256').update(pwd).digest('base64'); 

आपका विशिष्ट कार्यान्वयन इस प्रकार दिखाई देंगे:

var crypto = require('crypto'); 
module.exports = function(pwd, fn) { 
    var hash = crypto.createHash('sha256').update(pwd).digest('base64'); 
    fn(null, hash); 
}; 
+6

असल में एक pa उत्पन्न करने के लिए saword sha256 में धोया गया है, आपको पाचन 'हेक्स' का उपयोग करना होगा: var हैश = crypto.createHash ('sha256')। अद्यतन (pwd) .digest ('hex'); – Vadorequest

+6

हैश अभी भी 'sha256' है, यह सिर्फ एक अलग एन्कोडिंग में है। जिस व्यक्ति ने सवाल पूछा वह भी 'बेस 64' को अपने एन्कोडिंग के रूप में इस्तेमाल करता था, इसलिए, मैंने ऐसा उत्तर दिया। – hexacyanide

+5

हाँ, यह सिर्फ मुझे लगता है कि कुछ लोग एन्कोडिंग का प्रबंधन नहीं करते हैं और परिणामस्वरूप मूल SHA256 (जैसे मुझे) में परिणाम चाहते हैं, मैंने इसे समझने के लिए कुछ समय उपयोग किया था, इसलिए मैं केवल nexts के लिए मदद करना चाहता था: p – Vadorequest

संबंधित मुद्दे