जावा क्रिप्टोग्राफी - डिक्रिप्टिंग डेटा

आप एन्क्रिप्ट किए गए डेटा को सिफर वर्ग के उपयोग से डिक्रिप्ट कर सकते हैं javax.cryptoपैकेज। जावा का उपयोग करके दिए गए डेटा को डिक्रिप्ट करने के लिए नीचे दिए गए चरणों का पालन करें।

चरण 1: एक KeyPairGenerator ऑब्जेक्ट बनाएँ

KeyPairGenerator वर्ग प्रदान करता है getInstance() वह विधि जो आवश्यक कुंजी-जनरेटिंग एल्गोरिथ्म का प्रतिनिधित्व करने वाले स्ट्रिंग चर को स्वीकार करती है और KeyPairGenerator ऑब्जेक्ट देता है जो कुंजी उत्पन्न करता है।

सृजन करना KeyPairGenerator का उपयोग कर वस्तु getInstance() नीचे दिखाए अनुसार विधि।

//Creating KeyPair generator object
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("DSA");

चरण 2: KeyPairGenerator ऑब्जेक्ट को प्रारंभ करें

KeyPairGenerator क्लास नाम की एक विधि प्रदान करता है initialize()इस विधि का उपयोग कुंजी युग्म जनरेटर को आरंभ करने के लिए किया जाता है। यह विधि मुख्य आकार का प्रतिनिधित्व करने वाले पूर्णांक मान को स्वीकार करती है।

KeyPairGenerator ऑब्जेक्ट को चरण का उपयोग करके पिछले चरण में बनाया गया प्रारंभ करें initialize() नीचे दिखाए अनुसार विधि।

//Initializing the KeyPairGenerator
keyPairGen.initialize(2048);

चरण 3: KeyPairGenerator उत्पन्न करें

आप उत्पन्न कर सकते हैं KeyPair का उपयोग करते हुए generateKeyPair() की विधि KeyPairGeneratorकक्षा। नीचे दिखाए गए अनुसार इस विधि का उपयोग करके मुख्य जोड़ी बनाएं।

//Generate the pair of keys
KeyPair pair = keyPairGen.generateKeyPair();

चरण 4: सार्वजनिक कुंजी प्राप्त करें

आप जनरेट किए गए KeyPair ऑब्जेक्ट से सार्वजनिक कुंजी प्राप्त कर सकते हैं getPublic() नीचे दिखाए अनुसार विधि।

//Getting the public key from the key pair
PublicKey publicKey = pair.getPublic();

चरण 5: एक सिफर ऑब्जेक्ट बनाएं

getInstance() उसकि विधि Cipher क्लास एक स्ट्रिंग चर को आवश्यक परिवर्तन का प्रतिनिधित्व करता है और एक सिफर ऑब्जेक्ट देता है जो दिए गए परिवर्तन को लागू करता है।

का उपयोग कर सिफर ऑब्जेक्ट बनाएँ getInstance() नीचे दिखाए अनुसार विधि।

//Creating a Cipher object
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");

चरण 6: सिफर ऑब्जेक्ट को प्रारंभ करें

init() सिफर वर्ग की विधि दो मापदंडों को स्वीकार करती है

  • पूर्णांक पैरामीटर ऑपरेशन मोड का प्रतिनिधित्व करता है (एन्क्रिप्ट / डिक्रिप्ट)
  • सार्वजनिक कुंजी का प्रतिनिधित्व करने वाली प्रमुख वस्तु

का उपयोग करके Cypher वस्तु को आरम्भिक करें init() नीचे दिखाए अनुसार विधि।

//Initializing a Cipher object
cipher.init(Cipher.ENCRYPT_MODE, publicKey);

चरण 7: डेटा को सिफर ऑब्जेक्ट में जोड़ें

update() सिफर वर्ग की विधि डेटा को दर्शाने वाले बाइट सरणी को स्वीकार करती है और दिए गए डेटा के साथ वर्तमान ऑब्जेक्ट को अपडेट करती है।

डेटा को पास करके आरंभित सिफर ऑब्जेक्ट को अपडेट करें update() नीचे के रूप में बाइट सरणी के रूप में विधि।

//Adding data to the cipher
byte[] input = "Welcome to Tutorialspoint".getBytes();	  
cipher.update(input);

चरण 8: डेटा एन्क्रिप्ट करें

doFinal()सिफर वर्ग की विधि एन्क्रिप्शन ऑपरेशन को पूरा करती है। इसलिए, नीचे दिखाए गए अनुसार इस पद्धति का उपयोग करके एन्क्रिप्शन को समाप्त करें।

//Encrypting the data
byte[] cipherText = cipher.doFinal();

चरण 9: डिक्रिप्शन के लिए सिफर ऑब्जेक्ट को प्रारंभ करें

पिछले चरण में एन्क्रिप्ट किए गए साइबरफोर को डिक्रिप्ट करने के लिए आपको डिक्रिप्शन के लिए इसे इनिशियलाइज़ करना होगा।

इसलिए, सिफर ऑब्जेक्ट को प्रारंभ करें जैसा कि नीचे दिखाया गया है, सिफर D.ECRYPT_MODE और PrivateKey ऑब्जेक्ट पैरामीटर को पास करके।

//Initializing the same cipher for decryption
cipher.init(Cipher.DECRYPT_MODE, pair.getPrivate());

चरण 10: डेटा को डिक्रिप्ट करें

अंत में, एन्क्रिप्टेड पाठ का उपयोग करके डिक्रिप्ट करें doFinal() नीचे दिखाए अनुसार विधि।

//Decrypting the text
byte[] decipheredText = cipher.doFinal(cipherText);

उदाहरण

निम्नलिखित जावा प्रोग्राम उपयोगकर्ता से पाठ को स्वीकार करता है, आरएसए एल्गोरिथ्म का उपयोग करके इसे एन्क्रिप्ट करता है और, दिए गए पाठ के सिफर को प्रिंट करता है, सिफर को डिक्रिप्ट करता है और फिर से डिक्रिप्ट किए गए पाठ को प्रिंट करता है।

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.Signature;

import javax.crypto.Cipher;

public class CipherDecrypt {
   public static void main(String args[]) throws Exception{
	   //Creating a Signature object
      Signature sign = Signature.getInstance("SHA256withRSA");
      
      //Creating KeyPair generator object
      KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
      
      //Initializing the key pair generator
      keyPairGen.initialize(2048);
      
      //Generate the pair of keys
      KeyPair pair = keyPairGen.generateKeyPair();   
      
      //Getting the public key from the key pair
      PublicKey publicKey = pair.getPublic();  

      //Creating a Cipher object
      Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");

      //Initializing a Cipher object
      cipher.init(Cipher.ENCRYPT_MODE, publicKey);
	  
      //Add data to the cipher
      byte[] input = "Welcome to Tutorialspoint".getBytes();	  
      cipher.update(input);
	  
      //encrypting the data
      byte[] cipherText = cipher.doFinal();	 
      System.out.println( new String(cipherText, "UTF8"));

      //Initializing the same cipher for decryption
      cipher.init(Cipher.DECRYPT_MODE, pair.getPrivate());
      
      //Decrypting the text
      byte[] decipheredText = cipher.doFinal(cipherText);
      System.out.println(new String(decipheredText));
   }
}

उत्पादन

उपरोक्त कार्यक्रम निम्नलिखित आउटपुट उत्पन्न करता है -

Encrypted Text:
]/[?F3?D?p
v?w?!?H???^?A??????P?u??FA?
?
???_?? ???_jMH-??>??OP?'?j?_?n`
?_??'`????o??_GL??g???g_f?????f|???LT?|?Vz_TDu#??\?<b,,?$C2???Bq?#?lDB`??g,^??K?_?v???`}
?;LX?a?_5e???#???_?6?/B&B_???^?__Ap^#_?q?IEh????_?,??*??]~_?_?D?
_y???lp??a?P_U{

Decrypted Text:
Welcome to Tutorialspoint