TypeScript में क्रिप्टोग्राफी: एन्क्रिप्शन और हैशिंग व्यवहार में

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

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

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

TypeScript में क्रिप्टोग्राफी: एन्क्रिप्शन और हैशिंग — पूरी गाइड



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



1. TypeScript में क्रिप्टोग्राफी की मूल बातें



TypeScript इकोसिस्टम में क्रिप्टोग्राफी के दो मुख्य दृष्टिकोण हैं:

  • Web Crypto API — ब्राउज़र और Node.js (संस्करण 15 से) में निर्मित API, जो क्रिप्टोग्राफिक ऑपरेशन तक निम्न-स्तरीय पहुँच प्रदान करता है।
  • तृतीय-पक्ष लाइब्रेरीज़ — विशिष्ट कार्यों के लिए crypto-js, node-forge, bcryptjs जैसी लाइब्रेरीज़।


Node.js पर सर्वर-साइड डेवलपमेंट के लिए, अंतर्निहित crypto मॉड्यूल का उपयोग करने की अनुशंसा की जाती है, जो प्लेटफ़ॉर्म का हिस्सा है और अतिरिक्त निर्भरताओं की स्थापना की आवश्यकता नहीं है।



2. डेटा हैशिंग



हैशिंग निश्चित लंबाई का एकतरफा डेटा रूपांतरण है। इसका उपयोग पासवर्ड स्टोर करने, फ़ाइल अखंडता की जाँच करने और चेकसम बनाने के लिए किया जाता है।



2.1. Web Crypto API का उपयोग करके SHA-256



async function hashSHA256(data: string): Promise<string> {  const encoder = new TextEncoder();  const dataBuffer = encoder.encode(data);  const hashBuffer = await crypto.subtle.digest('SHA-256', dataBuffer);  const hashArray = Array.from(new Uint8Array(hashBuffer));  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');}

// उपयोग का उदाहरणconst myHash = await hashSHA256('नमस्ते, दुनिया!');console.log(myHash); // 64 हेक्स वर्ण


2.2. bcrypt के साथ पासवर्ड हैशिंग



पासवर्ड को सुरक्षित रूप से स्टोर करने के लिए, सॉल्ट वाले विशेष एल्गोरिदम का उपयोग करें, जैसे bcrypt:



import bcrypt from 'bcryptjs';

async function hashPassword(password: string): Promise<string> { const salt = await bcrypt.genSalt(12); // 12 राउंड — एक अच्छा संतुलन return await bcrypt.hash(password, salt);}

async function verifyPassword(password: string, hash: string): Promise<boolean> { return await bcrypt.compare(password, hash);}

// उदाहरणconst password = 'MySecurePass!';const hashedPassword = await hashPassword(password);const isValid = await verifyPassword('MySecurePass!', hashedPassword);console.log(isValid); // true


3. सममित एन्क्रिप्शन



सममित एन्क्रिप्शन डेटा को एन्क्रिप्ट और डिक्रिप्ट करने के लिए एक ही कुंजी का उपयोग करता है। सबसे आधुनिक और सुरक्षित एल्गोरिदम AES-GCM है, जो गोपनीयता और प्रमाणीकरण दोनों प्रदान करता है।



3.1. AES-GCM एन्क्रिप्शन और डिक्रिप्शन



interface EncryptedData {  iv: Uint8Array;  ciphertext: Uint8Array;  tag: Uint8Array;}

async function encryptAESGCM( plaintext: string, key: CryptoKey): Promise<EncryptedData> { const encoder = new TextEncoder(); const data = encoder.encode(plaintext); const iv = crypto.getRandomValues(new Uint8Array(12)); // 96-बिट IV const encrypted = await crypto.subtle.encrypt( { name: 'AES-GCM', iv }, key, data ); // GCM अंत में 16 बाइट का प्रमाणीकरण टैग जोड़ता है const ciphertext = new Uint8Array(encrypted.slice(0, encrypted.byteLength - 16)); const tag = new Uint8Array(encrypted.slice(encrypted.byteLength - 16)); return { iv, ciphertext, tag };}

async function decryptAESGCM( encrypted: EncryptedData, key: CryptoKey): Promise<string> { // Web Cry के लिए ciphertext और tag को मिलाएं

अनुशंसाएँ