Heim  >  Artikel  >  Java  >  Symmetrische Verschlüsselungskryptographie in Java

Symmetrische Verschlüsselungskryptographie in Java

WBOY
WBOYnach vorne
2023-09-13 15:49:021422Durchsuche

Symmetrische Verschlüsselungskryptographie in Java

Einführung

Symmetrische Verschlüsselung, auch Schlüsselverschlüsselung genannt, ist eine Verschlüsselungsmethode, bei der derselbe Schlüssel für die Ver- und Entschlüsselung verwendet wird. Diese Verschlüsselungsmethode ist schnell und effizient und eignet sich zur Verschlüsselung großer Datenmengen. Der am häufigsten verwendete symmetrische Verschlüsselungsalgorithmus ist Advanced Encryption Standard (AES).

Java bietet starke Unterstützung für symmetrische Verschlüsselung, einschließlich Klassen im javax.crypto-Paket, wie SecretKey, Cipher und KeyGenerator.

Symmetrische Verschlüsselung in Java

Die Java Cipher-Klasse im Paket javax.crypto stellt kryptografische Funktionen für die Ver- und Entschlüsselung bereit. Es bildet den Kern des Java Cryptozoology Extensions (JCE)-Frameworks.

In Java stellt die Cipher-Klasse die Funktion der symmetrischen Verschlüsselung bereit, und die KeyGenerator-Klasse wird zum Generieren von Schlüsseln für die symmetrische Verschlüsselung verwendet.

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

Sehen wir uns ein Beispiel einer einfachen symmetrischen Verschlüsselung AES an, die in Java implementiert ist −

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class Main {
   public static void main(String[] args) throws Exception {

      // Generate key
      SecretKey secretKey = KeyGenerator.getInstance("AES").generateKey();
   
      // Original message
      String originalMessage = "Hello, world!";
   
      // Create Cipher instance and initialize it to ENCRYPT_MODE
      Cipher cipher = Cipher.getInstance("AES");
      cipher.init(Cipher.ENCRYPT_MODE, secretKey);
   
      // Encrypt the message
      byte[] encryptedMessage = cipher.doFinal(originalMessage.getBytes(StandardCharsets.UTF_8));
   
      // Convert the encrypted message to Base64 encoded string
      String encodedMessage = Base64.getEncoder().encodeToString(encryptedMessage);
   
      System.out.println("Original Message: " + originalMessage);
      System.out.println("Encrypted Message: " + encodedMessage);
   
      // Reinitialize the cipher to DECRYPT_MODE
      cipher.init(Cipher.DECRYPT_MODE, secretKey);
   
      // Decrypt the message
      byte[] decryptedMessage = cipher.doFinal(Base64.getDecoder().decode(encodedMessage));
   
      System.out.println("Decrypted Message: " + new String(decryptedMessage, StandardCharsets.UTF_8));
   }
}

Ausgabe

Wenn Sie das Programm ausführen, sehen Sie eine Ausgabe ähnlich der folgenden -

Original Message: Hello, world!
Encrypted Message: iWohhm/c89uBVaJ3j4YFkA==
Decrypted Message: Hello, world!
Die chinesische Übersetzung von

Erklärung

lautet:

Erklärung

Im obigen Code generieren wir zunächst den geheimen Schlüssel für die AES-Verschlüsselung mithilfe der KeyGenerator-Klasse.

Dann erstellen wir eine Instanz der Cipher-Klasse für AES und initialisieren sie mit dem geheimen Schlüssel auf ENCRYPT_MODE.

Als nächstes definieren wir eine Rohnachricht „Hello, world!“ und verschlüsseln sie mit der doFinal-Methode von Cipher. Wir wandeln die verschlüsselten Nachrichtenbytes auch in eine Base64-codierte Zeichenfolge um, um die Verarbeitung zu erleichtern.

Dann drucken wir die Originalnachricht und die verschlüsselte Nachricht an die Konsole.

Um die Entschlüsselung zu demonstrieren, verwenden wir denselben Schlüssel, um das Passwort auf DECRYPT_MODE neu zu initialisieren und die verschlüsselte Nachricht zu entschlüsseln. Abschließend geben wir die entschlüsselte Nachricht an die Konsole aus.

Da jedes Mal, wenn Sie das Programm ausführen, ein einzigartiger geheimer Schlüssel generiert wird, ist die verschlüsselte Nachricht jedes Mal anders.

Hier ist zu beachten, dass die entschlüsselte Nachricht mit der Originalnachricht identisch ist, was darauf hindeutet, dass unser Ver- und Entschlüsselungsprozess ordnungsgemäß funktioniert.

Wichtige Punkte

Symmetrische Verschlüsselung ist ein leistungsstarkes Tool zur Wahrung der Vertraulichkeit, aber es ist wichtig zu bedenken, dass Ihre Daten nur so sicher sind wie Ihre Schlüssel. Wenn eine unbefugte Person an Ihren geheimen Schlüssel gelangt, kann sie Ihre Daten entschlüsseln. Daher ist es wichtig, den geheimen Schlüssel sicher aufzubewahren.

Fazit

Die Implementierung der symmetrischen Verschlüsselung in Java ist dank des Pakets javax.crypto ein einfacher Vorgang. Wenn Sie wissen, wie Sie die Klassen Cipher und KeyGenerator zum Ver- und Entschlüsseln von Daten verwenden, können Sie die Sicherheit Ihrer Java-Anwendungen erheblich verbessern.

Das obige ist der detaillierte Inhalt vonSymmetrische Verschlüsselungskryptographie in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen