Cryptographie Java - Chiffrement des données

Vous pouvez crypter des données données à l'aide de la classe Cipher du javax.cryptopaquet. Suivez les étapes ci-dessous pour crypter les données données à l'aide de Java.

Étape 1: créer un objet KeyPairGenerator

le KeyPairGenerator classe fournit getInstance() qui accepte une variable String représentant l'algorithme de génération de clé requis et renvoie un objet KeyPairGenerator qui génère des clés.

Créer KeyPairGenerator objet utilisant le getInstance() méthode comme indiqué ci-dessous.

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

Étape 2: initialiser l'objet KeyPairGenerator

le KeyPairGenerator classe fournit une méthode nommée initialize()cette méthode est utilisée pour initialiser le générateur de paires de clés. Cette méthode accepte une valeur entière représentant la taille de la clé.

Initialisez l'objet KeyPairGenerator créé à l'étape précédente à l'aide du initialize() méthode comme indiqué ci-dessous.

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

Étape 3: générer le KeyPairGenerator

Vous pouvez générer le KeyPair en utilisant le generateKeyPair() méthode de la KeyPairGeneratorclasse. Générez la paire de clés en utilisant cette méthode comme indiqué ci-dessous.

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

Étape 4: Obtenez la clé publique

Vous pouvez obtenir la clé publique à partir du fichier généré KeyPair objet utilisant le getPublic() méthode comme indiqué ci-dessous.

Obtenez la clé publique en utilisant cette méthode comme indiqué ci-dessous.

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

Étape 5: créer un objet Cipher

le getInstance() méthode de Cipher class accepte une variable String représentant la transformation requise et renvoie un objet Cipher qui implémente la transformation donnée.

Créez l'objet Cipher à l'aide du getInstance() méthode comme indiqué ci-dessous.

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

Étape 6: Initialisez l'objet Cipher

le init() méthode de la Cipher class accepte deux paramètres, un paramètre entier représentant le mode de fonctionnement (chiffrer / déchiffrer) et un objet Key représentant la clé publique.

Initialisez l'objet Cypher à l'aide du init() méthode comme indiqué ci-dessous.

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

Étape 7: Ajouter des données à l'objet Cipher

le update() La méthode de la classe Cipher accepte un tableau d'octets représentant les données à chiffrer et met à jour l'objet courant avec les données fournies.

Mettez à jour l'objet Cipher initialisé en transmettant les données au update() sous la forme d'un tableau d'octets comme indiqué ci-dessous.

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

Étape 8: Crypter les données

le doFinal()La méthode de la classe Cipher termine l'opération de chiffrement. Par conséquent, terminez le cryptage en utilisant cette méthode comme indiqué ci-dessous.

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

Exemple

Le programme Java suivant accepte le texte de l'utilisateur, le crypte à l'aide de l'algorithme RSA et imprime le format crypté du texte donné.

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

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

public class CipherSample {
   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);
      
      //Generating the pair of keys
      KeyPair pair = keyPairGen.generateKeyPair();      
	
      //Creating a Cipher object
      Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
        
      //Initializing a Cipher object
      cipher.init(Cipher.ENCRYPT_MODE, pair.getPublic());
	  
      //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"));
   }
}

Production

Le programme ci-dessus génère la sortie suivante -

Encrypted Text: 
"???:]J_?]???;Xl??????*@??u???r??=T&???_?_??.??i?????(?$_f?zD??????ZGH??g???
g?E:_??bz^??f?~o???t?}??u=uzp\UI????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_??_???