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.
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 vonSehen 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)); } }
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
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.
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.
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!