Heim >Java >javaLernprogramm >So implementieren Sie den DES-Verschlüsselungsalgorithmus mit Java

So implementieren Sie den DES-Verschlüsselungsalgorithmus mit Java

王林
王林Original
2023-09-20 17:25:45858Durchsuche

So implementieren Sie den DES-Verschlüsselungsalgorithmus mit Java

So implementieren Sie den DES-Verschlüsselungsalgorithmus mit Java

Übersicht:
DES (Data Encryption Standard) ist ein symmetrischer Verschlüsselungsalgorithmus, der häufig bei der Datenverschlüsselung und -entschlüsselung im Computerbereich verwendet wird. In Java können wir die Bibliothek javax.crypto verwenden, um den DES-Verschlüsselungsalgorithmus zu implementieren.

Schritte:

  1. Zugehörige Bibliotheken importieren
    Zunächst müssen Sie die relevanten Klassen in die javax.crypto-Bibliothek importieren. Fügen Sie am Anfang des Codes die folgenden Importanweisungen hinzu:

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

  1. Generieren Sie den Schlüssel
    Der DES-Algorithmus verwendet einen 8-Byte-Schlüssel, und wir können die KeyGenerator-Klasse verwenden, um den Schlüssel zu generieren. Das Folgende ist ein Codebeispiel zum Generieren eines Schlüssels:

KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
SecretKey secretKey = keyGenerator.generateKey();

    Konvertierungsschlüssel
  1. Der generierte Schlüssel ist ein Objekt vom Typ SecretKey und wir müssen ihn zur Verwendung in ein Objekt vom Typ SecretKeySpec konvertieren. Das Folgende ist ein Codebeispiel zum Konvertieren des Schlüssels:
SecretKeySpec SecretKeySpec = new SecretKeySpec(keyBytes, "DES");

    Erstellen Sie eine Verschlüsselungsinstanz
  1. Verwenden Sie die Cipher-Klasse, um eine Verschlüsselungsinstanz zu erstellen. Wir verwenden die DES/. CBC/PKCS5Padding-Algorithmus-Verschlüsselung. Das Folgende ist ein Codebeispiel zum Erstellen einer Verschlüsselungsinstanz:
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");

    Initialisieren einer Verschlüsselungsinstanz
  1. Beim Initialisieren einer Verschlüsselungsinstanz müssen Sie angeben Verschlüsselungsmodus, Schlüssel und Initialisierungsvektor (IV). Rufen Sie dann zur Initialisierung die Init-Methode der Verschlüsselung auf. Das Folgende ist ein Codebeispiel zum Initialisieren einer Verschlüsselungsinstanz:
// Holen Sie sich den Initialisierungsvektor

byte[] iv = new byte[cipher.getBlockSize()];
SecureRandom secureRandom = new SecureRandom();
secureRandom.nextBytes (iv);

cipher.init(Cipher.ENCRYPT_MODE, SecretKeySpec, new IvParameterSpec(iv));

    Daten verschlüsseln
  1. Verwenden Sie die doFinal-Methode von Cipher, um Daten zu verschlüsseln. Das Folgende ist ein Codebeispiel zum Verschlüsseln von Daten:
byte[] verschlüsseltBytes = cipher.doFinal(input.getBytes());

    Daten entschlüsseln
  1. Die Schritte zum Entschlüsseln von Daten ähneln der Verschlüsselung. Sie müssen nur Änderungen vornehmen Der Verschlüsselungsmodus in den Entschlüsselungsmodus reicht aus. Das Folgende ist ein Codebeispiel zum Entschlüsseln von Daten:
cipher.init(Cipher.DECRYPT_MODE, SecretKeySpec, new IvParameterSpec(iv));

byte[] decryptedBytes = cipher.doFinal(encryptedBytes);

    Vollständiger Beispielcode :
import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java .security .SecureRandom;

public class DESExample {

public static void main(String[] args) throws Exception {
    // 生成密钥
    KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
    SecretKey secretKey = keyGenerator.generateKey();
    byte[] keyBytes = secretKey.getEncoded();

    // 转换密钥
    SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "DES");

    // 创建加密实例
    Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");

    // 初始化加密实例
    byte[] iv = new byte[cipher.getBlockSize()];
    SecureRandom secureRandom = new SecureRandom();
    secureRandom.nextBytes(iv);

    cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, new IvParameterSpec(iv));

    // 加密数据
    String input = "Hello, world!";
    byte[] encryptedBytes = cipher.doFinal(input.getBytes());

    // 解密数据
    cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, new IvParameterSpec(iv));

    byte[] decryptedBytes = cipher.doFinal(encryptedBytes);

    // 打印结果
    System.out.println("明文:" + input);
    System.out.println("加密后:" + new String(encryptedBytes));
    System.out.println("解密后:" + new String(decryptedBytes));
}

}

Zusammenfassung:

Durch die obigen Schritte können wir Java verwenden, um den DES-Verschlüsselungsalgorithmus zu implementieren. In der tatsächlichen Entwicklung können Sie eine angemessene Auswahl an Verschlüsselungsalgorithmen und Verschlüsselungsmodi entsprechend Ihren eigenen Anforderungen treffen und entsprechende Anpassungen entsprechend bestimmten Geschäftsszenarien vornehmen. Bitte beachten Sie jedoch, dass der DES-Verschlüsselungsalgorithmus veraltet ist und nicht mehr empfohlen wird. Eine sicherere Option ist der AES-Verschlüsselungsalgorithmus.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie den DES-Verschlüsselungsalgorithmus mit Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn