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

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

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

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

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

\n\n

कोटलिन (विशेष रूप से Android और बैकएंड के लिए) में आधुनिक विकास में अक्सर क्रिप्टोग्राफिक फ़ंक्शन के कार्यान्वयन की आवश्यकता होती है। इस लेख में, हम कोटलिन और मानक Java Cryptography Extension (JCE) और Bouncy Castle लाइब्रेरी का उपयोग करके डेटा को एन्क्रिप्ट और हैश करने के मुख्य दृष्टिकोणों पर चर्चा करेंगे।

\n\n

मुख्य अवधारणाएँ

\n

कोटलिन में क्रिप्टोग्राफी JVM की क्षमताओं पर आधारित है। आप इसका उपयोग कर सकते हैं:

\n
    \n
  • सममित एन्क्रिप्शन (AES, DES) — एन्क्रिप्शन और डिक्रिप्शन के लिए एक कुंजी।
  • \n
  • असममित एन्क्रिप्शन (RSA) — कुंजियों की एक जोड़ी: सार्वजनिक और निजी।
  • \n
  • हैशिंग (SHA-256, MD5) — डेटा का अपरिवर्तनीय रूपांतरण।
  • \n
  • HMAC — अखंडता सत्यापन के लिए गुप्त कुंजी के साथ हैशिंग।
  • \n
\n\n

प्रोजेक्ट सेटअप

\n

अधिकांश उदाहरणों के लिए, मानक Java लाइब्रेरी पर्याप्त है। उन्नत एल्गोरिदम (जैसे, GCM के साथ AES) के लिए, build.gradle.kts में निर्भरता जोड़ें:

\n
dependencies {\n    implementation("org.bouncycastle:bcprov-jdk15on:1.70")\n}
\n\n

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

\n

AES सबसे लोकप्रिय एल्गोरिदम है। स्ट्रिंग को एन्क्रिप्ट और डिक्रिप्ट करने का उदाहरण:

\n
import javax.crypto.Cipher\nimport javax.crypto.KeyGenerator\nimport javax.crypto.SecretKey\nimport javax.crypto.spec.IvParameterSpec\nimport java.util.Base64\n\nfun aesEncrypt(plainText: String, secretKey: SecretKey): String {\n    val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding")\n    val iv = ByteArray(16) // IV जनरेशन\n    java.security.SecureRandom().nextBytes(iv)\n    cipher.init(Cipher.ENCRYPT_MODE, secretKey, IvParameterSpec(iv))\n    val encrypted = cipher.doFinal(plainText.toByteArray())\n    // IV और सिफरटेक्स्ट को मिलाएं\n    val combined = iv + encrypted\n    return Base64.getEncoder().encodeToString(combined)\n}\n\nfun aesDecrypt(encryptedBase64: String, secretKey: SecretKey): String {\n    val combined = Base64.getDecoder().decode(encryptedBase64)\n    val iv = combined.copyOfRange(0, 16)\n    val encrypted = combined.copyOfRange(16, combined.size)\n    val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding")\n    cipher.init(Cipher.DECRYPT_MODE, secretKey, IvParameterSpec(iv))\n    return String(cipher.doFinal(encrypted))\n}\n\n// उपयोग\nfun main() {\n    val keyGen = KeyGenerator.getInstance("AES")\n    keyGen.init(256)\n    val secretKey = keyGen.generateKey()\n\n    val original = "Hello, Kotlin Crypto!"\n    val encrypted = aesEncrypt(original, secretKey)\n    println("एन्क्रिप्ट किया गया: $encrypted")\n\n    val decrypted = aesDecrypt(encrypted, secretKey)\n    println("डिक्रिप्ट किया गया: $decrypted")\n}
\n\n

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

\n

RSA का उपयोग डेटा के सुरक्षित स्थानांतरण के लिए किया जाता है। उदाहरण:

\n
import java.security.KeyPairGenerator\nimport java.security.PrivateKey\nimport java.security.PublicKey\nimport javax.crypto.Cipher\nimport java.util.Base64\n\nfun generateRSAKeyPair(): Pair<PublicKey, PrivateKey> {\n    val generator = KeyPairGenerator.getInstance("RSA")\n    generator.initialize(2048)\n    val keyPair = generator.generateKeyPair()\n    return Pair(keyPair.public, keyPair.private)\n}\n\nfun rsaEncrypt(plainText: String, publicKey: PublicKey): String {\n    val cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding")\n    cipher.init(Cipher.ENCRYPT_MODE, publicKey)\n    return Base64.getEncoder().encodeToString(cipher.doFinal(plainText.toByteArray()))\n}\n\nfun rsaDecrypt(encryptedBase64: String, privateKey: PrivateKey): String {\n    val cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding")\n    cipher.init(Cipher.DECRYPT_MODE, privateKey)\n    return String(cipher.doFinal(Base64.getDecoder().decode(encryptedBase64)))\n}\n\nfun main() {\n    val (publicKey, privateKey) = generateRSAKeyPair()\n    val message = "गुप्त संदेश"\n    val encryp                    

अनुशंसाएँ