JCE Encryption - Tutorial für Datenverschlüsselungsstandard (DES)

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