JCE-Verschlüsselung - DES-Lernprogramm (Data Encryption Standard)
In diesem Artikel zeigen wir Ihnen, wie SieJava Cryptography Extension (JCE)
verwenden, um einen Text über den Mechanismus vonData Encryption
Standard (DES)zu verschlüsseln oder zu entschlüsseln.
1. DES-Schlüssel
Erstellen Sie einen DES-Schlüssel.
KeyGenerator keygenerator = KeyGenerator.getInstance("DES"); SecretKey myDesKey = keygenerator.generateKey();
2. Chiffrierinfo
Erstellen Sie eine Cipher-Instanz aus der Cipher-Klasse, geben Sie die folgenden Informationen an und trennen Sie sie durch einen Schrägstrich (/).
-
Algorithmusname
-
Modus (optional)
-
Polsterungsschema (optional)
Cipher desCipher; // Create the cipher desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
Note
DES = Datenverschlüsselungsstandard.
EZB = E-Codebuch-Modus.
PKCS5Padding = PKCS # 5-Padding.
In diesem Fall haben Sie eine DES-Verschlüsselung (Data Encryption Standard) im elektronischen Codebuchmodus mit PKCS # 5-Auffüllung erstellt.
3. Konvertieren Sie es
Konvertieren Sie String in das Array-Format Byte [].
byte[] text = "No body can see me".getBytes();
4. Verschlüsseln Sie es
Machen Sie die Verschlüsselung im Verschlüsselungsmodus und verschlüsseln Sie sie mit der MethodeCipher.doFinal()
.
desCipher.init(Cipher.ENCRYPT_MODE, myDesKey); byte[] textEncrypted = desCipher.doFinal(text);
5. Entschlüsseln Sie es
Machen Sie die Verschlüsselung im Entschlüsselungsmodus und entschlüsseln Sie sie auch mit der MethodeCipher.doFinal()
.
desCipher.init(Cipher.DECRYPT_MODE, myDesKey); byte[] textDecrypted = desCipher.doFinal(textEncrypted);
6. Vollständiges Beispiel
Vollständiges Beispiel, um zu zeigen, wie Java JCE zum Ver- und Entschlüsseln von Text im DES-Mechanismus verwendet wird.
package com.example.util; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.KeyGenerator; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKey; public class JEncrytion { public static void main(String[] argv) { try{ KeyGenerator keygenerator = KeyGenerator.getInstance("DES"); SecretKey myDesKey = keygenerator.generateKey(); Cipher desCipher; // Create the cipher desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); // Initialize the cipher for encryption desCipher.init(Cipher.ENCRYPT_MODE, myDesKey); //sensitive information byte[] text = "No body can see me".getBytes(); System.out.println("Text [Byte Format] : " + text); System.out.println("Text : " + new String(text)); // Encrypt the text byte[] textEncrypted = desCipher.doFinal(text); System.out.println("Text Encryted : " + textEncrypted); // Initialize the same cipher for decryption desCipher.init(Cipher.DECRYPT_MODE, myDesKey); // Decrypt the text byte[] textDecrypted = desCipher.doFinal(textEncrypted); System.out.println("Text Decryted : " + new String(textDecrypted)); }catch(NoSuchAlgorithmException e){ e.printStackTrace(); }catch(NoSuchPaddingException e){ e.printStackTrace(); }catch(InvalidKeyException e){ e.printStackTrace(); }catch(IllegalBlockSizeException e){ e.printStackTrace(); }catch(BadPaddingException e){ e.printStackTrace(); } } }
Ausgabe
Text [Byte Format] : [B@19b5393 Text : No body can see me Text Encryted : [B@4e79f1 Text Decryted : No body can see me
Referenz
-
JavaTM-Kryptografiearchitektur -http://java.sun.com/j2se/1.5.0/docs/guide/security/CryptoSpec.html