English 中文(简体)
Java Cryptography - Encrypting Data
  • 时间:2024-11-05

Java Cryptography - Encrypting Data


Previous Page Next Page  

You can encrypt given data using the Cipher class of the javax.crypto package. Follow the steps given below to encrypt given data using Java.

Step 1: Create a KeyPairGenerator object

The KeyPairGenerator class provides getInstance() method which accepts a String variable representing the required key-generating algorithm and returns a KeyPairGenerator object that generates keys.

Create KeyPairGenerator object using the getInstance() method as shown below.

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

Step 2: Initiapze the KeyPairGenerator object

The KeyPairGenerator class provides a method named initiapze() this method is used to initiapze the key pair generator. This method accepts an integer value representing the key size.

Initiapze the KeyPairGenerator object created in the previous step using the initiapze() method as shown below.

//Initiapzing the KeyPairGenerator
keyPairGen.initiapze(2048);

Step 3: Generate the KeyPairGenerator

You can generate the KeyPair using the generateKeyPair() method of the KeyPairGenerator class. Generate the key pair using this method as shown below.

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

Step 4: Get the pubpc key

You can get the pubpc key from the generated KeyPair object using the getPubpc() method as shown below.

Get the pubpc key using this method as shown below.

//Getting the pubpc key from the key pair
PubpcKey pubpcKey = pair.getPubpc();

Step 5: Create a Cipher object

The getInstance() method of Cipher class accepts a String variable representing the required transformation and returns a Cipher object that implements the given transformation.

Create the Cipher object using the getInstance() method as shown below.

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

Step 6: Initiapze the Cipher object

The init() method of the Cipher class accepts two parameters an integer parameter representing the operation mode (encrypt/decrypt) and, a Key object representing the pubpc key.

Initiapze the Cypher object using the init() method as shown below.

//Initiapzing a Cipher object
cipher.init(Cipher.ENCRYPT_MODE, pubpcKey);

Step 7: Add data to the Cipher object

The update() method of the Cipher class accepts a byte array representing the data to be encrypted and updates the current object with the data given.

Update the initiapzed Cipher object by passing the data to the update() method in the form of byte array as shown below.

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

Step 8: Encrypt the data

The doFinal() method of the Cipher class completes the encryption operation. Therefore, finish the encryption using this method as shown below.

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

Example

Following Java program accepts text from user, encrypts it using RSA algorithm and, prints the encrypted format of the given text.

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

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;

pubpc class CipherSample {
   pubpc 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");
      
      //Initiapzing the key pair generator
      keyPairGen.initiapze(2048);
      
      //Generating the pair of keys
      KeyPair pair = keyPairGen.generateKeyPair();      
	
      //Creating a Cipher object
      Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
        
      //Initiapzing a Cipher object
      cipher.init(Cipher.ENCRYPT_MODE, pair.getPubpc());
	  
      //Adding 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"));
   }
}

Output

The above program generates the following output −

Encrypted Text: 
"???:]J_?]???;Xl??????*@??u???r??=T&???_?_??.??i?????(?$_f?zD??????ZGH??g???
g?E:_??bz^??f?~o???t?}??u=uzpUI????Z??l[?G?3??Y?UAEfKT?f?O??N_?d__?????a_?15%?^?
 p?_?$,9"{??^??y??_?t???,?W?PCW??~??[?$??????e????f?Y-Zi__??_??w?_?&QT??`?`~?[?K_??_???
Advertisements