C# (.NET) में क्रिप्टोग्राफी: एन्क्रिप्शन और हैशिंग
\n\nडेटा सुरक्षा आधुनिक विकास के प्रमुख कार्यों में से एक है। .NET प्लेटफ़ॉर्म System.Security.Cryptography नाम स्थान में क्रिप्टोग्राफ़िक सुरक्षा के लिए एक शक्तिशाली और लचीला टूलसेट प्रदान करता है। इस लेख में, हम C# में क्रिप्टोग्राफी की मुख्य क्षमताओं: सममित और असममित एन्क्रिप्शन, साथ ही डेटा हैशिंग पर विस्तार से चर्चा करेंगे। यह सामग्री शुरुआती और अनुभवी डेवलपर्स दोनों के लिए उपयोगी होगी जो अपने ज्ञान को व्यवस्थित करना चाहते हैं।
1. मुख्य नाम स्थान और क्लासेस
\n\nसभी क्रिप्टोग्राफ़िक कार्यक्षमता System.Security.Cryptography असेंबली में केंद्रित है। प्रमुख क्लासेस:
- \n
Aes,DES,TripleDES— सममित एल्गोरिदम; \n RSA,ECDsa,ECDiffieHellman— असममित एल्गोरिदम; \n SHA256,SHA512,MD5— हैशिंग एल्गोरिदम; \n RandomNumberGenerator— क्रिप्टोग्राफ़िक रूप से सुरक्षित रैंडम नंबर जनरेटर। \n
महत्वपूर्ण: केवल आधुनिक एल्गोरिदम का उपयोग करें। MD5 और SHA1 को क्रिप्टोग्राफ़िक उद्देश्यों के लिए पुराना और असुरक्षित माना जाता है।
\n\n2. सममित एन्क्रिप्शन (AES)
\n\nसममित एन्क्रिप्शन एन्क्रिप्ट और डिक्रिप्ट करने के लिए एक ही कुंजी का उपयोग करता है। सबसे लोकप्रिय एल्गोरिदम AES (Advanced Encryption Standard) है। आइए एक स्ट्रिंग को एन्क्रिप्ट करने का उदाहरण देखें।
\n\nusing System;\nusing System.IO;\nusing System.Security.Cryptography;\nusing System.Text;\n\npublic class AesEncryption\n{\n public static byte[] EncryptStringToBytes_Aes(string plainText, byte[] key, byte[] iv)\n {\n using (Aes aes = Aes.Create())\n {\n aes.Key = key;\n aes.IV = iv;\n\n ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);\n\n using (MemoryStream msEncrypt = new MemoryStream())\n {\n using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))\n {\n using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))\n {\n swEncrypt.Write(plainText);\n }\n return msEncrypt.ToArray();\n }\n }\n }\n }\n\n public static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] key, byte[] iv)\n {\n using (Aes aes = Aes.Create())\n {\n aes.Key = key;\n aes.IV = iv;\n\n ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);\n\n using (MemoryStream msDecrypt = new MemoryStream(cipherText))\n {\n using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))\n {\n using (StreamReader srDecrypt = new StreamReader(csDecrypt))\n {\n return srDecrypt.ReadToEnd();\n }\n }\n }\n }\n }\n}\n\nसुरक्षित कुंजी और इनिशियलाइज़ेशन वेक्टर (IV) उत्पन्न करने के लिए RandomNumberGenerator का उपयोग करें:
using System.Security.Cryptography;\n\nbyte[] key = new byte[32]; // 256 बिट\nbyte[] iv = new byte[16]; // 128 बिट\nusing (RandomNumberGenerator rng = RandomNumberGenerator.Create())\n{\n rng.GetBytes(key);\n rng.GetBytes(iv);\n}\n\n3. असममित एन्क्रिप्शन (RSA)
\n\nअसममित एन्क्रिप्शन कुंजियों की एक जोड़ी का उपयोग करता है: सार्वजनिक (public) और निजी (private)। RSA एक क्लासिक एल्गोरिदम है जो छोटी डेटा मात्रा (आमतौर पर 2048-बिट कुंजी के लिए 190 बाइट्स तक) को एन्क्रिप्ट करने के लिए उपयुक्त है। उदाहरण:
\n\nusing System;\nusing System.Security.Cryptography;\nusing System.Text;\n\npublic class RsaEncryption\n{\n public static (byte[]