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