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

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

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

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

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



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



क्रिप्टोग्राफी की मूल अवधारणाएँ

कोड पर जाने से पहले, बुनियादी क्रिप्टोग्राफ़िक प्रिमिटिव के बीच अंतर को समझना महत्वपूर्ण है:

  • सममित एन्क्रिप्शन — डेटा को एन्क्रिप्ट और डिक्रिप्ट करने के लिए एक ही कुंजी का उपयोग करता है। तेज़ है, लेकिन कुंजी के सुरक्षित स्थानांतरण की आवश्यकता होती है।
  • असममित एन्क्रिप्शन — कुंजियों की एक जोड़ी का उपयोग करता है: सार्वजनिक (एन्क्रिप्शन के लिए) और निजी (डिक्रिप्शन के लिए)। धीमा है, लेकिन कुंजी विनिमय की समस्या को हल करता है।
  • हैशिंग — डेटा का एक निश्चित लंबाई की स्ट्रिंग में अपरिवर्तनीय रूपांतरण। अखंडता सत्यापन और पासवर्ड भंडारण के लिए उपयोग किया जाता है।


जावा में AES सममित एन्क्रिप्शन

AES (Advanced Encryption Standard) सबसे लोकप्रिय सममित एल्गोरिथ्म है। Java में, इसके साथ काम Cipher वर्ग के माध्यम से किया जाता है। आइए एक स्ट्रिंग को एन्क्रिप्ट और डिक्रिप्ट करने का उदाहरण देखें:



import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;import java.util.Base64;

public class AesExample { public static void main(String[] args) throws Exception { // AES-128 कुंजी जनरेशन KeyGenerator keyGen = KeyGenerator.getInstance("AES"); keyGen.init(128); SecretKey secretKey = keyGen.generateKey(); // मूल संदेश String originalMessage = "Привет, криптография!"; System.out.println("मूल संदेश: " + originalMessage); // एन्क्रिप्शन Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] encryptedBytes = cipher.doFinal(originalMessage.getBytes("UTF-8")); String encryptedMessage = Base64.getEncoder().encodeToString(encryptedBytes); System.out.println("एन्क्रिप्टेड संदेश: " + encryptedMessage); // डिक्रिप्शन cipher.init(Cipher.DECRYPT_MODE, secretKey); byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedMessage)); String decryptedMessage = new String(decryptedBytes, "UTF-8"); System.out.println("डिक्रिप्टेड संदेश: " + decryptedMessage); }}


उदाहरण में PKCS5Padding पैडिंग के साथ ECB (Electronic Codebook) मोड का उपयोग किया गया है। प्रोडक्शन के लिए, CBC या GCM जैसे अधिक सुरक्षित मोड का उपयोग करने की अनुशंसा की जाती है।



असममित एन्क्रिप्शन RSA

RSA एक क्लासिक असममित एल्गोरिथ्म है। Java में, इसके साथ काम करने के लिए KeyPairGenerator और Cipher वर्गों का उपयोग किया जाता है। यह याद रखना महत्वपूर्ण है: RSA केवल कुंजी के आकार (आमतौर पर 2048 बिट) तक के डेटा को एन्क्रिप्ट कर सकता है। बड़ी मात्रा में डेटा के लिए, RSA को सममित एन्क्रिप्शन (हाइब्रिड योजना) के साथ जोड़ा जाता है।



import javax.crypto.Cipher;import java.security.*;import java.util.Base64;

public class RsaExample { public static void main(String[] args) throws Exception { // RSA-2048 कुंजी युग्म जनरेशन KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); keyGen.initialize(2048); KeyPair keyPair = keyGen.generateKeyPair(); PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); String secretMessage = "Секретные данные"; System.out.println("मूल संदेश: " + secretMessage); // सार्वजनिक कुंजी से एन्क्रिप्शन ```

अनुशंसाएँ