Java-Kryptographie - Daten verschlüsseln

Sie können bestimmte Daten mit der Cipher-Klasse der verschlüsseln javax.cryptoPaket. Führen Sie die folgenden Schritte aus, um bestimmte Daten mit Java zu verschlüsseln.

Schritt 1: Erstellen Sie ein KeyPairGenerator-Objekt

Das KeyPairGenerator Klasse bietet getInstance() Methode, die eine String-Variable akzeptiert, die den erforderlichen Algorithmus zur Schlüsselgenerierung darstellt, und ein KeyPairGenerator-Objekt zurückgibt, das Schlüssel generiert.

Erstellen KeyPairGenerator Objekt mit dem getInstance() Methode wie unten gezeigt.

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

Schritt 2: Initialisieren Sie das KeyPairGenerator-Objekt

Das KeyPairGenerator Klasse stellt eine Methode mit dem Namen bereit initialize()Diese Methode wird verwendet, um den Schlüsselpaargenerator zu initialisieren. Diese Methode akzeptiert einen ganzzahligen Wert, der die Schlüsselgröße darstellt.

Initialisieren Sie das im vorherigen Schritt erstellte KeyPairGenerator-Objekt mit dem initialize() Methode wie unten gezeigt.

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

Schritt 3: Generieren Sie den KeyPairGenerator

Sie können die generieren KeyPair Verwendung der generateKeyPair() Methode der KeyPairGeneratorKlasse. Generieren Sie das Schlüsselpaar mit dieser Methode wie unten gezeigt.

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

Schritt 4: Holen Sie sich den öffentlichen Schlüssel

Sie können den öffentlichen Schlüssel aus dem generierten erhalten KeyPair Objekt mit dem getPublic() Methode wie unten gezeigt.

Rufen Sie den öffentlichen Schlüssel mit dieser Methode ab, wie unten gezeigt.

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

Schritt 5: Erstellen Sie ein Cipher-Objekt

Das getInstance() Methode von Cipher Die Klasse akzeptiert eine String-Variable, die die erforderliche Transformation darstellt, und gibt ein Cipher-Objekt zurück, das die angegebene Transformation implementiert.

Erstellen Sie das Cipher-Objekt mit dem getInstance() Methode wie unten gezeigt.

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

Schritt 6: Initialisieren Sie das Cipher-Objekt

Das init() Methode der Cipher Die Klasse akzeptiert zwei Parameter, einen ganzzahligen Parameter, der den Betriebsmodus darstellt (verschlüsseln / entschlüsseln), und ein Schlüsselobjekt, das den öffentlichen Schlüssel darstellt.

Initialisieren Sie das Cypher-Objekt mit init() Methode wie unten gezeigt.

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

Schritt 7: Fügen Sie dem Cipher-Objekt Daten hinzu

Das update() Die Methode der Cipher-Klasse akzeptiert ein Byte-Array, das die zu verschlüsselnden Daten darstellt, und aktualisiert das aktuelle Objekt mit den angegebenen Daten.

Aktualisieren Sie das initialisierte Cipher-Objekt, indem Sie die Daten an das übergeben update() Methode in Form eines Byte-Arrays wie unten gezeigt.

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

Schritt 8: Verschlüsseln Sie die Daten

Das doFinal()Die Methode der Cipher-Klasse schließt den Verschlüsselungsvorgang ab. Beenden Sie daher die Verschlüsselung mit dieser Methode wie unten gezeigt.

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

Beispiel

Das folgende Java-Programm akzeptiert Text vom Benutzer, verschlüsselt ihn mit dem RSA-Algorithmus und druckt das verschlüsselte Format des angegebenen Textes.

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"));
   }
}

Ausgabe

Das obige Programm erzeugt die folgende Ausgabe -

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_??_? ??