MongoDB शेल में hex_md5() का उपयोग करके पासवर्ड के लिए MD5 हैश जनरेट करना और संग्रहीत करना
MongoDB शेल एक बिल्ट-इन hex_md5() फंक्शन प्रदान करता है जो एक स्ट्रिंग का MD5 हैश हेक्साडेसिमल स्ट्रिंग के रूप में गणना करता है। इसका उपयोग डॉक्यूमेंट्स को पुनरावृत्त करने और हैश्ड पासवर्ड फील्ड जोड़ने के लिए forEach() के साथ किया जा सकता है।
नमूना डेटा बनाना
> db.addMd5HashValueDemo.insertOne({"UserName":"Adam","UserPassword":"Adam123456"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6a4c66d78f205348bc619") }
> db.addMd5HashValueDemo.insertOne({"UserName":"Chris","UserPassword":"Chris_121#"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6a4e46d78f205348bc61a") }
हैश से पहले डॉक्यूमेंट्स देखना
> db.addMd5HashValueDemo.find();
आउटपुट:
{ "_id" : ObjectId("5cd6a4c66d78f205348bc619"), "UserName" : "Adam", "UserPassword" : "Adam123456" }
{ "_id" : ObjectId("5cd6a4e46d78f205348bc61a"), "UserName" : "Chris", "UserPassword" : "Chris_121#" }
MD5 हैश की गणना और संग्रहण
> db.addMd5HashValueDemo.find().forEach(function(documentPass) {
documentPass.Value = hex_md5(documentPass.UserPassword);
db.addMd5HashValueDemo.save(documentPass);
});
परिणाम वेरिफाई करना
> db.addMd5HashValueDemo.find();
आउटपुट:
{ "_id" : ObjectId("5cd6a4c66d78f205348bc619"), "UserName" : "Adam", "UserPassword" : "Adam123456", "Value" : "6523857c2bf79b63fd5fa0322575f7be" }
{ "_id" : ObjectId("5cd6a4e46d78f205348bc61a"), "UserName" : "Chris", "UserPassword" : "Chris_121#", "Value" : "3391ccbe33624258cafa23aa50301615" }
व्याख्या
hex_md5(string)- शेल फंक्शन जो 32-कैरेक्टर हेक्स MD5 हैश लौटाता है।forEach()- प्रत्येक डॉक्यूमेंट पर पुनरावृति करता है।save()- संशोधित डॉक्यूमेंट को प्रतिस्थापित करता है (_idके आधार पर अपसर्ट)।
⚠️ सुरक्षा चेतावनी
MD5 पासवर्ड स्टोरेज के लिए क्रिप्टोग्राफिक रूप से टूटा हुआ और असुरक्षित है।
- कोई साल्ट नहीं - रेनबो टेबल हमलों की चपेट में।
- तेज़ गणना - ब्रूट-फोर्स संभव।
- उत्पादन के लिए उपयोग न करें।
अनुशंसित विकल्प
- bcrypt - एप्लिकेशन लेवल (उदाहरण के लिए, Node.js में
bcryptjs, Python मेंpasslib)। - Argon2 - आधुनिक, मेमोरी-हार्ड, अनुशंसित।
- PBKDF2 - व्यापक रूप से समर्थित, कॉन्फ़िगरेबल इटरेशन्स।
MongoDB 4.2+ में सर्वर-साइड हैशिंग (एग्रीगेशन)
MongoDB में $function के माध्यम से कस्टम JavaScript का समर्थन है, लेकिन पासवर्ड हैशिंग के लिए सर्वर-साइड JavaScript अनुशंसित नहीं है। एप्लिकेशन लेवल पर हैश करें।