TypeScript में क्रिप्टोग्राफी: डेटा का एन्क्रिप्शन और हैशिंग
आधुनिक वेब डेवलपमेंट में, डेटा सुरक्षा एक महत्वपूर्ण पहलू है। TypeScript, JavaScript पर एक सख्ती से टाइप किया गया ओवरले, क्रिप्टोग्राफ़िक ऑपरेशन को लागू करने के लिए शक्तिशाली उपकरण प्रदान करता है। इस लेख में, हम TypeScript में उपलब्ध मुख्य एन्क्रिप्शन और हैशिंग एल्गोरिदम पर चर्चा करेंगे और दिखाएंगे कि उन्हें व्यवहार में कैसे लागू किया जाए।
अंतर्निहित मॉड्यूल crypto और लाइब्रेरीज़
Node.js एक अंतर्निहित मॉड्यूल crypto प्रदान करता है, जो TypeScript के साथ पूरी तरह से संगत है। ब्राउज़र अनुप्रयोगों के लिए Web Crypto API का उपयोग किया जाता है। अधिक जटिल कार्यों के लिए, crypto-js लाइब्रेरी की सिफारिश की जाती है, जो Node.js और ब्राउज़र दोनों में काम करती है।
आवश्यक पैकेज स्थापित करना:
npm install crypto-jsnpm install @types/crypto-js --save-devसममित एन्क्रिप्शन AES
AES (Advanced Encryption Standard) एल्गोरिदम सबसे लोकप्रिय सममित सिफर है। यह डेटा को एन्क्रिप्ट और डिक्रिप्ट करने के लिए एक ही कुंजी का उपयोग करता है।
TypeScript में AES-256 का कार्यान्वयन उदाहरण:
import CryptoJS from 'crypto-js';
const SECRET_KEY = 'my-strong-secret-key-32chars';
function encryptAES(text: string): string { const encrypted = CryptoJS.AES.encrypt(text, SECRET_KEY); return encrypted.toString();}
function decryptAES(ciphertext: string): string { const decrypted = CryptoJS.AES.decrypt(ciphertext, SECRET_KEY); return decrypted.toString(CryptoJS.enc.Utf8);}
// उपयोगconst originalText = 'सुरक्षा के लिए गुप्त डेटा';const encrypted = encryptAES(originalText);console.log('एन्क्रिप्टेड:', encrypted);
const decrypted = decryptAES(encrypted);console.log('डिक्रिप्टेड:', decrypted);असममित एन्क्रिप्शन RSA
RSA कुंजियों की एक जोड़ी का उपयोग करता है: सार्वजनिक (public) और निजी (private)। सार्वजनिक कुंजी से डेटा एन्क्रिप्ट किया जाता है, और निजी कुंजी से डिक्रिप्ट किया जाता है। यह सुरक्षित डेटा ट्रांसमिशन के लिए आदर्श है।
Node.js crypto का उपयोग करते हुए उदाहरण:
import * as crypto from 'crypto';
function generateRSAKeys(): { publicKey: string; privateKey: string } { const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', { modulusLength: 2048, publicKeyEncoding: { type: 'spki', format: 'pem' }, privateKeyEncoding: { type: 'pkcs8', format: 'pem' } }); return { publicKey, privateKey };}
function encryptRSA(plainText: string, publicKey: string): string { const buffer = Buffer.from(plainText, 'utf-8'); const encrypted = crypto.publicEncrypt(publicKey, buffer); return encrypted.toString('base64');}
function decryptRSA(cipherText: string, privateKey: string): string { const buffer = Buffer.from(cipherText, 'base64'); const decrypted = crypto.privateDecrypt(privateKey, buffer); return decrypted.toString('utf-8');}
// उपयोग का उदाहरणconst keys = generateRSAKeys();const message = 'गोपनीय संदेश';const encryptedRSA = encryptRSA(message, keys.publicKey);const decryptedRSA = decryptRSA(encryptedRSA, keys.privateKey);
console.log('मूल:', message);console.log('डिक्रिप्टेड:', decryptedRSA);डेटा हैशिंग
हैशिंग डेटा का एक निश्चित लंबाई की स्ट्रिंग में एकतरफा रूपांतरण है। एन्क्रिप्शन के विपरीत, हैश को उलटा नहीं किया जा सकता। मुख्य अनुप्रयोग:
- पासवर्ड भंडारण — पासवर्ड के बजाय उसका हैश संग्रहीत किया जाता है
- डेटा अखंडता जांच — फ़ाइल हैश की तुलना
- डिजिटल हस्ताक्षर — लेखकत्व की पुष्टि
SHA-256
SHA-2 परिवार का सबसे सामान्य एल्गोरिदम:
import CryptoJS from 'crypto-js';
function hashSHA256(data: string): string { return CryptoJS.SHA256(data).toString();}