Swift (iOS/macOS) में क्रिप्टोग्राफी: एन्क्रिप्शन और हैशिंग
\n\nडेटा सुरक्षा iOS और macOS के तहत विकास का एक प्रमुख पहलू है। Swift क्रिप्टोग्राफ़िक सुरक्षा के लिए शक्तिशाली उपकरण प्रदान करता है: अंतर्निहित फ्रेमवर्क CryptoKit (iOS 13 / macOS 10.15 से शुरू) से लेकर निम्न-स्तरीय CommonCrypto (C-लाइब्रेरी) तक। इस लेख में हम मुख्य संचालनों को समझेंगे: सममित एन्क्रिप्शन (AES), असममित (RSA), हैशिंग (SHA-256) और संदेश प्रमाणीकरण (HMAC)।
1. प्रोजेक्ट सेटअप
\n\nCryptoKit का उपयोग करने के लिए किसी अतिरिक्त सेटअप की आवश्यकता नहीं है - यह मानक Foundation लाइब्रेरी का हिस्सा है। यदि आप CommonCrypto के साथ काम कर रहे हैं, तो Bridging-Header में जोड़ें (Swift + ObjC के लिए) या सीधे मॉड्यूल आयात करें:
// Swift 5+ में CommonCrypto के लिए उपयोग कर सकते हैं:\nimport CommonCrypto\n// या मॉड्यूलर ब्रिज (modulemap) सेट करें\n\n\n2. CryptoKit के साथ सममित एन्क्रिप्शन (AES-GCM)
\n\nCryptoKit GCM मोड (Galois/Counter Mode) में AES के लिए उच्च-स्तरीय API प्रदान करता है - एन्क्रिप्शन का एक सुरक्षित और सरल तरीका।
import CryptoKit\nimport Foundation\n\n// स्ट्रिंग एन्क्रिप्ट करने का फंक्शन\nfunc encryptString(_ plaintext: String, using key: SymmetricKey) throws -> Data {\n let plaintextData = plaintext.data(using: .utf8)!\n let sealedBox = try AES.GCM.seal(plaintextData, using: key)\n return sealedBox.combined! // combined = nonce + ciphertext + tag\n}\n\n// डिक्रिप्ट करने का फंक्शन\nfunc decryptData(_ combinedData: Data, using key: SymmetricKey) throws -> String {\n let sealedBox = try AES.GCM.SealedBox(combined: combinedData)\n let decryptedData = try AES.GCM.open(sealedBox, using: key)\n return String(data: decryptedData, encoding: .utf8)!\n}\n\n// उपयोग का उदाहरण\nlet key = SymmetricKey(size: .bits256) // 256-बिट कुंजी\nlet original = "iOS के लिए गुप्त संदेश"\nlet encrypted = try encryptString(original, using: key)\nprint("एन्क्रिप्टेड: \\(encrypted.base64EncodedString())")\n\nlet decrypted = try decryptData(encrypted, using: key)\nprint("डिक्रिप्टेड: \\(decrypted)")\n\n\nमहत्वपूर्ण: SymmetricKey यादृच्छिक रूप से उत्पन्न होता है। वास्तविक एप्लिकेशन के लिए कुंजी को Keychain में संग्रहीत करें या Secure Enclave का उपयोग करें।
3. हैशिंग (SHA-256) और HMAC
\n\nहैशिंग एक एकतरफा फंक्शन है, जो डेटा अखंडता की जाँच और पासवर्ड भंडारण के लिए अपरिहार्य है। CryptoKit SHA-256, SHA-384, SHA-512 का समर्थन करता है।
import CryptoKit\n\nfunc sha256Hash(of data: Data) -> String {\n let digest = SHA256.hash(data: data)\n return digest.compactMap { String(format: "%02x", $0) }.joined()\n}\n\n// स्ट्रिंग के लिए उदाहरण\nlet message = "Hello, Swift Crypto!"\nlet hash = sha256Hash(of: message.data(using: .utf8)!)\nprint("SHA-256: \\(hash)")\n\n\nसंदेश प्रमाणीकरण (HMAC) के लिए कुंजी के साथ HMAC का उपयोग करें:
func hmacSHA256(key: SymmetricKey, data: Data) -> Data {\n let authenticationCode = HMAC<SHA256>.authenticationCode(for: data, using: key)\n return Data(authenticationCode)\n}\n\nlet hmacKey = SymmetricKey(size: .bits256)\nlet hmacResult = hmacSHA256(key: hmacKey, data: "महत्वपूर्ण डेटा".data(using: .utf8)!)\nprint("HMAC: \\(hmacResult.base64EncodedString())")\n\n\n4. Security फ्रेमवर्क के माध्यम से असममित एन्क्रिप्शन (RSA)
\n\nRSA के लिए Security फ्रेमवर्क (SecKey) का उपयोग करें। CryptoKit सीधे RSA का समर्थन नहीं करता, लेकिन आप दृष्टिकोणों को जोड़ सकते हैं।
import Security\n\n// RSA कुंजी जोड़ी उत्पन्न करना (2048 बिट)\nfunc generateRSAKeyPair() -> (privateKey: SecKey, publicKey: SecKey)? {\n let attributes: [String: Any] = [\n kSecAttrKeyType as String: kSecAttrKeyTypeRSA,\n kSecAttrKeySizeInBits as String: 2048,\n kS पुस्तकालय में भी
Rust के लिए Elasticsearch क्लाइंट: elasticsearch-rs लाइब्रेरी की पूरी गाइड
Go में PDF जनरेशन: लाइब्रेरीज़ का अवलोकन और व्यावहारिक मार्गदर्शिका
Redis क्लाइंट C# (.NET) के लिए: StackExchange.Redis — कनेक्शन और उदाहरण