Node.js में क्रिप्टोग्राफी: crypto के साथ एन्क्रिप्शन और हैशिंग

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Node.js में क्रिप्टोग्राफी: एन्क्रिप्शन और हैशिंग के लिए crypto मॉड्यूल

\n\n

आधुनिक वेब डेवलपमेंट में डेटा सुरक्षा एक महत्वपूर्ण पहलू है। Node.js एक अंतर्निहित crypto मॉड्यूल प्रदान करता है, जो क्रिप्टोग्राफिक फ़ंक्शन लागू करता है, जिसमें सममित और असममित एन्क्रिप्शन, हैशिंग, और संदेश प्रमाणीकरण कोड (HMAC) की गणना शामिल है। इस लेख में हम व्यावहारिक उदाहरणों के साथ crypto मॉड्यूल की मुख्य क्षमताओं पर विस्तार से चर्चा करेंगे।

\n\n

स्थापना और कनेक्शन

\n

crypto मॉड्यूल Node.js मानक लाइब्रेरी का हिस्सा है, इसलिए अतिरिक्त स्थापना की आवश्यकता नहीं है। उपयोग के लिए इसे आयात करना पर्याप्त है:

\n
const crypto = require('crypto');
\n\n

डेटा हैशिंग

\n

हैशिंग डेटा का एक निश्चित लंबाई की स्ट्रिंग में एकतरफा रूपांतरण है। सबसे लोकप्रिय एल्गोरिदम SHA-256 है। हैश का उपयोग डेटा अखंडता की जांच और पासवर्ड संग्रहीत करने (नमक के साथ संयोजन में) के लिए किया जाता है।

\n\n
const data = "गुप्त संदेश";\nconst hash = crypto.createHash('sha256')\n    .update(data)\n    .digest('hex');\n\nconsole.log(`SHA-256 हैश: ${hash}`);\n// आउटपुट: 64-अक्षर वाली स्ट्रिंग
\n\n

पासवर्ड सुरक्षा बढ़ाने के लिए हमेशा नमक (salt) और PBKDF2 या bcrypt एल्गोरिदम का उपयोग करें। PBKDF2 के साथ उदाहरण:

\n\n
const password = "उपयोगकर्ता_पासवर्ड";\nconst salt = crypto.randomBytes(16).toString('hex');\n\ncrypto.pbkdf2(password, salt, 100000, 64, 'sha512', (err, derivedKey) => {\n    if (err) throw err;\n    console.log(`पासवर्ड हैश: ${derivedKey.toString('hex')}`);\n    console.log(`नमक: ${salt}`);\n});
\n\n

सममित एन्क्रिप्शन (AES)

\n

सममित एन्क्रिप्शन एन्क्रिप्ट और डिक्रिप्ट करने के लिए एक ही कुंजी का उपयोग करता है। सबसे आम एल्गोरिदम AES (एडवांस्ड एन्क्रिप्शन स्टैंडर्ड) है। आइए AES-256-CBC का उपयोग करके एन्क्रिप्शन और डिक्रिप्शन देखें।

\n\n
const algorithm = 'aes-256-cbc';\nconst key = crypto.randomBytes(32); // 256-बिट कुंजी\nconst iv = crypto.randomBytes(16);  // आरंभीकरण वेक्टर\n\n// एन्क्रिप्शन\nfunction encrypt(text) {\n    const cipher = crypto.createCipheriv(algorithm, key, iv);\n    let encrypted = cipher.update(text, 'utf8', 'hex');\n    encrypted += cipher.final('hex');\n    return { iv: iv.toString('hex'), encryptedData: encrypted };\n}\n\n// डिक्रिप्शन\nfunction decrypt(encryptedData, ivHex) {\n    const decipher = crypto.createDecipheriv(algorithm, key, Buffer.from(ivHex, 'hex'));\n    let decrypted = decipher.update(encryptedData, 'hex', 'utf8');\n    decrypted += decipher.final('utf8');\n    return decrypted;\n}\n\n// उपयोग का उदाहरण\nconst message = "गोपनीय डेटा";\nconst encrypted = encrypt(message);\nconsole.log(`एन्क्रिप्टेड: ${encrypted.encryptedData}`);\n\nconst decrypted = decrypt(encrypted.encryptedData, encrypted.iv);\nconsole.log(`डिक्रिप्टेड: ${decrypted}`);
\n\n

महत्वपूर्ण: विभिन्न संदेशों के लिए कभी भी एक ही IV का उपयोग न करें। प्रत्येक एन्क्रिप्शन ऑपरेशन के लिए एक नया यादृच्छिक IV उत्पन्न करें।

\n\n

असममित एन्क्रिप्शन (RSA)

\n

असममित एन्क्रिप्शन कुंजियों की एक जोड़ी का उपयोग करता है: एन्क्रिप्शन के लिए सार्वजनिक (public) और डिक्रिप्शन के लिए निजी (private)। RSA सबसे लोकप्रिय एल्गोरिदम है।

\n\n
const { generateKeyPairSync, publicEncrypt, privateDecrypt } = crypto;\n\n// कुंजी उत्पादन\nconst { publicKey, privateKey } = generateKeyPairSync('rsa', {\n    modulusLength: 2048,\n    publicKeyEncoding: { type: 'spki', format: 'pem' },\n    privateKeyEncoding: { type: 'pkcs8', format: 'pem' }\n});\n\n// सार्वजनिक कुंजी से एन्क्रिप्शन\nconst dataToEncrypt = "RSA के लिए गुप्त संदेश";\nconst encryptedData = publicEncrypt(publicKey, Buffer.from(dataToEncrypt));\nconsole.log(`RSA एन्क्रिप्टेड: ${encryptedData.toString('base64')}`);\n\n// निजी कुंजी से डिक्रिप्शन\nconst decryptedData = privateDecrypt(privateKey, encryptedData);\nco                    

अनुशंसाएँ