Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB कलेक्शन में MD5 हैश वैल्यू कैसे जोड़ें?

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 अनुशंसित नहीं है। एप्लिकेशन लेवल पर हैश करें।

  1. - MongoDB संग्रह में तिथियों के अनुसार समूह कैसे बनाएं?

    तिथियों के अनुसार समूह बनाने के लिए, MongoDB एग्रीगेट में $group का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo657.insertOne({ id: 1, Name: Chris, DueDate: new ISODate(2020-04-22) }); { acknowledged : true, insertedId : ObjectId(5ea064b44deddd72997713d6) } > db.de

  1. - MongoDB कलेक्शन को ऐरे वैल्यू द्वारा सॉर्ट करें

    MongoDB कलेक्शन को ऐरे वैल्यू द्वारा सॉर्ट करने के लिए, $sort के साथ aggregate() का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo577.insertOne({ student: { details: [ { Name:Chris, Score:45 }, { Name:Bob, Score:33 }, { Name:Davi

  1. - C# में OrderedDictionary संग्रह में कुंजी और मान जोड़ें

    C# में OrderedDictionary वर्ग की Add(key, value) विधि का उपयोग करके कुंजी-मान जोड़े जोड़े जा सकते हैं। यह संग्रह सम्मिलन क्रम को बनाए रखता है, जिससे तत्वों को उनके जोड़े जाने के क्रम में पुनरावृत्त किया जा सकता है। उदाहरण 1: दो OrderedDictionary बनाना और तुलना using System; using System.Collections