Heim > Java > javaLernprogramm > Hauptteil

Symmetrische Verschlüsselungskryptographie in Java

WBOY
Freigeben: 2023-09-13 15:49:02
nach vorne
1392 Leute haben es durchsucht

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));
   }
}
Nach dem Login kopieren

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!
Nach dem Login kopieren
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!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!