PGP -Verschlüsselung in Java

PGP -Verschlüsselung in Java
PGP oder Sehr Gute Privatsphäre verwendet eine Kombination aus Verschlüsselung, Hashing und Datenkomprimierungstechniken, um Nachrichten, E -Mails und Dokumente zu verschlüsseln und zu entschlüsseln. Es verwendet ein einzigartiges Schlüsselsystem, in dem eine “Öffentlicher Schlüssel" und ein "Privat Schlüssel”Werden einem Benutzer zugewiesen. Wenn ein Benutzer beispielsweise versucht, eine Nachricht mit seinem öffentlichen Schlüssel zu senden, verschlüsselt PGP diese spezifische Nachricht, die dazu beiträgt. Nach dem Empfang der verschlüsselten Nachricht verwendet der Empfänger oder der Empfänger seinen privaten Schlüssel, um die Nachricht zu entschlüsseln.

PGP -Verschlüsselung mit RSA -Algorithmus

Der PGP -Tastatur kann unter Verwendung einer Vielzahl von Verschlüsselungsalgorithmen erzeugt werden. Wenn Sie jedoch die PGP -Tasten manuell erzeugen, bietet sie jedoch RSA Als Standard -Algorithmusoption. Der RSA -Algorithmus wurde von “erstellt“Rivest-Shamir-Adleman" In 1978. Es verwendet öffentliche und private Schlüssel zur Datenverschlüsselung und Entschlüsselung. Beispielsweise sendet ein Client dem Server seinen öffentlichen Schlüssel und fordert einige Daten an. Dann verschlüsselt der Server die Daten mit Hilfe des öffentlichen Schlüssels des Kunden und sendet sie an sie. Nach dem Empfangen der Daten entschlüsselt der Kunde sie mit seinem privaten Schlüssel.

RSA ermöglicht es Ihnen, Ihre Datei oder Nachricht vor dem Senden zu sichern. Mit der Verwendung von RSA in der PGP -Verschlüsselungsmethode können Sie Ihre Daten zertifizieren, so. Diese Beschreibung wird Sie leiten PGP -Verschlüsselung In Java Verwendung der RSA Algorithmus. Darüber hinaus werden wir auch ein Java -Programm für die PGP -Verschlüsselung und -Delyption unter Linux demonstrieren. So lass uns anfangen!

Notiz: Installieren Sie Java JDK auf Ihrem Linux -System, bevor Sie es nicht bereits haben.

So installieren Sie Java JDK 17 unter Linux

Java installieren JDK 17 Erstens auf Ihrem System drücken Sie “Strg+Alt+t”Um den Terminal zu öffnen und dann den folgenden Curl -Befehl auszuführen:

$ curl -o https: // herunterladen.Orakel.com/java/17/letztes/jdk-17_linux-x64_bin.Teer.gz

Die fehlerfreie Ausgabe erklärt, dass der Download abgeschlossen ist. Jetzt werden wir die "extrahieren"JDK-17_LINUX-X64_BIN.Teer.gz"Mit Hilfe des untergegebenen"Teer" Befehl:

$ tar -xvf jdk-17_linux-x64_bin.Teer.gz

Im nächsten Schritt werden wir die “bewegen“JDK-17.0.1”Extrahiertes Verzeichnis in die“/opt/opt/" Standort:

$ sudo mv jdk-17.0.1 /opt /jdk17

Setzen Sie danach die Java -Umgebungsvariable und fügen Sie den Pfad hinzu:

$ export java_home =/opt/jdk17

Bis zu diesem Zeitpunkt haben Sie Java JDK auf Ihrem System installiert und konfiguriert. Geben Sie für die Verifizierungsversion das „Geben Sie die“ einJavaBefehl mit dem “-Ausführung" Möglichkeit:

$ java -Verssion

PGP -Verschlüsselung in Java mit RSA

Jetzt werden wir vorwärts gehen und ein Java -Programm zum Verschlingen und Entschlüsseln einer Nachricht mit Hilfe von PGP -Schlüssel erstellen. Der Algorithmus, den wir verwenden werden, ist “RSA", mit "PKCS1"Polsterung und"EZBBlockmodus. Der "EZB”Oder elektronischer Codebuchmodus ist der einfachste Ansatz, der verwendet wird, um eine Abfolge von Nachrichtenblöcken zu verarbeiten, während die“ die “PKSC1Polster hilft RSA bei der Definition der mathematischen Eigenschaften des PGP -Schlüsselpaares und des Verschlüsselungsprozesses.

Zunächst werden wir eine "erstellen"RSA" Klasse:

öffentliche Klasse RSA

Das "RSA"Klasse hat zwei Variablen, die"Privat Schlüssel" und das "Öffentlicher Schlüssel”:

private privatekey privatekey;
Private PublicKey PublicKey;

Wir werden den definierten PGP -Schlüssel den Wert mit einem “zuweisen“Tastaturgenerator”. Der "Tastaturgenerator"Wird die" nutzen "RSAAlgorithmus zur Erzeugung der PGP -Tastärwerte im Konstruktor der RSA -Klasse:

public RSA ()
versuchen
Tastaturgenerator Generator = Keypairgenerator.GetInstance ("RSA");
Generator.initialisieren (1024);
Tastaturpaar = Generator.generateKeypair ();
privatekey = pair.GetPrivate ();
PublicKey = Paar.getPublic ();
catch (Ausnahme ignoriert)

Im nächsten Schritt werden wir eine "erstellen"kodieren()" Und "dekodieren()"Funktion, die zum Codieren und Dekodieren der Nachricht mit der" verwendet wird "Basis64”(Binär zu text) Encoder und Decoder:

private String codes (Byte [] Daten)
Return Base64.GETECODER ().CodetoString (Daten);

private byte [] decode (String -Daten)
Return Base64.getDecoder ().decodieren (Daten);

Fügen Sie nun eine hinzu Verschlüsseln() Funktion in der RSA -Klasse. Im "Verschlüsseln()Die Funktion, wir werden zuerst die hinzugefügte Nachricht in Bytes konvertieren, da die angegebene Verschlüsselung mit einem Byte -Array erfolgen kann. Danach geben wir den Algorithmus, den Blockmodus und die Polsterung als “anRSA/EZB/PKCS1Padding" Für ein "Chiffre" Objekt. Dann werden wir die Chiffre mit der “initialisieren“ENCRYPT_MODE"Und die PGP"Öffentlicher Schlüssel”.

Diese Funktion "Encrypt () verwendet unsere PGP"Öffentlicher SchlüsselUm die Nachricht zu verschlüsseln und die verschlüsselten Bytes zurückzugeben:

public String decrypt (String -Nachricht) löst Ausnahme aus
Byte [] MessAgetobytes = Nachricht.getBytes ();
Cipher -Cipher = Cipher.GetInstance ("RSA/EZB/PKCS1Padding");
Chiffre.Init (Cipher.ENCRYPT_MODE, PublicKey);
Byte [] verschlüsselt Bytes = Cipher.Dofinal (Messagetobytes);
return codes (verschlüsselte bytes);

Ebenso werden wir eine andere Funktion namens definierenentschlüsseln ()"Um die Saiten zu dekodieren, die unsere PGP verwenden"Privat SchlüsselUm die verschlüsselte Nachricht in der zu entschlüsseln "Decrypt_mode" und geben Sie das entschlüsselte Array zurück:

public String entschlüsselt (String verschlüsseltMessage) löst Ausnahme aus
byte [] verschlüsseltBytes = decode (verschlüsseltMessage);
Cipher -Cipher = Cipher.GetInstance ("RSA/EZB/PKCS1Padding");
Chiffre.Init (Cipher.Decrypt_mode, privateKey);
Byte [] entschlüsseltMessage = Chiffre.dofinal (verschlüsselte Bytes);
Neue Zeichenfolge zurückgeben (entschlüsseltMessage, "utf8");

Lassen Sie uns nun das überprüfen "hauptsächlich()" Methodenfunktionalität. In "hauptsächlich(),"Erstens werden wir zwei Saiten definieren"verschlüsseltMessage" Und "entschlüsselt”. Der "Verschlüsselte Message" wird die verschlüsselte Form unserer hinzugefügten Zeichenfolge umfassen “Dies ist LinuxHint.com"Was wir mit RSA Encrypt () -Funktion und der" verschlüsseln werden "entschlüsseltVariable speichert die entschlüsselte Nachricht:

public static void main (String [] args)
RSA RSA = new RSA ();
versuchen
String verschlüsseltMessage = RSA.Verschlüsseln ("Dies ist LinuxHint.com ");
String entschlüsseltMessage = RSA.entschlüsseln (verschlüsselteMessage);
System.irren.println ("verschlüsselt: \ n"+verschlüsseltMessage);
System.irren.println ("entschlüsselt: \ n"+entschlüsseltMessage);
catch (Ausnahme ignoriert)

Implementierung der PGP -Verschlüsselung in Java

Wir hoffen, dass unsere angegebenen Anweisungen Ihnen geholfen haben, den oben gegebenen Code zu verstehen. In diesem Abschnitt wird der bereitgestellte PGP -Verschlüsselungs -Java -Code in unserem Linux -System implementiert, um Ihnen die Ausgabe anzuzeigen. Zu diesem Zweck werden wir zunächst eine erstellen “RSA.Java"Java -Datei mit der"Nano" Editor:

$ sudo nano rsa.Java

Dein "RSA.Java" Die Datei sieht zunächst so aus:

Fügen Sie nun den folgenden Code in Ihr "hinzu"RSA.Java"Datei und drücken Sie"Strg+o”Um die hinzugefügten Änderungen zu speichern:

Javax importieren.Krypto.Chiffre;
Java importieren.Sicherheit.Tastatur;
Java importieren.Sicherheit.Tastaturgenerator;
Java importieren.Sicherheit.Privat Schlüssel;
Java importieren.Sicherheit.Öffentlicher Schlüssel;
Java importieren.Util.Basis64;
öffentliche Klasse RSA
private privatekey privatekey;
Private PublicKey PublicKey;
public RSA ()
versuchen
Tastaturgenerator Generator = Keypairgenerator.GetInstance ("RSA");
Generator.initialisieren (1024);
Tastaturpaar = Generator.generateKeypair ();
privatekey = pair.GetPrivate ();
PublicKey = Paar.getPublic ();
catch (Ausnahme ignoriert)


public String decrypt (String -Nachricht) löst Ausnahme aus
Byte [] MessAgetobytes = Nachricht.getBytes ();
Cipher -Cipher = Cipher.GetInstance ("RSA/EZB/PKCS1Padding");
Chiffre.Init (Cipher.ENCRYPT_MODE, PublicKey);
Byte [] verschlüsselt Bytes = Cipher.Dofinal (Messagetobytes);
return codes (verschlüsselte bytes);

private String codes (Byte [] Daten)
Return Base64.GETECODER ().CodetoString (Daten);

public String entschlüsselt (String verschlüsseltMessage) löst Ausnahme aus
byte [] verschlüsseltBytes = decode (verschlüsseltMessage);
Cipher -Cipher = Cipher.GetInstance ("RSA/EZB/PKCS1Padding");
Chiffre.Init (Cipher.Decrypt_mode, privateKey);
Byte [] entschlüsseltMessage = Chiffre.dofinal (verschlüsselte Bytes);
Neue Zeichenfolge zurückgeben (entschlüsseltMessage, "utf8");

private byte [] decode (String -Daten)
Return Base64.getDecoder ().decodieren (Daten);

public static void main (String [] args)
RSA RSA = new RSA ();
versuchen
String verschlüsseltMessage = RSA.Verschlüsseln ("Dies ist LinuxHint.com ");
String entschlüsseltMessage = RSA.entschlüsseln (verschlüsselteMessage);
System.irren.println ("verschlüsselt: \ n"+verschlüsseltMessage);
System.irren.println ("entschlüsselt: \ n"+entschlüsseltMessage);
catch (Ausnahme ignoriert)

Als nächstes kompilieren Sie die “RSA.JavaDatei, indem Sie den folgenden Befehl schreiben:

$ javac rsa.Java

Die Zusammenstellung der angegebenen Datei führt zu einem “RSABinärdatei führen Sie sie aus, um die Ausgabe der PGP -Verschlüsselung und Entschlüsselung in Ihrem Linux -Terminal zu erhalten:

$ java rsa

Aus der Ausgabe können Sie sich die verschlüsselten und entschlüsselten Zeichenfolgen ansehen:

Abschluss

Die PGP -Verschlüsselung ermöglicht es Ihnen, Nachrichten oder E -Mails mit der Kombination von “sicher zu sendenÖffentlich" Und "Privatgelände" Schlüssel. Um zu zeigen, dass ein Absender der rechtmäßige Eigentümer der Kommunikation ist, bietet er eine digitale Signatur für private und öffentliche Schlüssel. Die PGP -Verschlüsselung wird auch verwendet, um zu bestätigen, ob eine Nachricht an den beabsichtigten Empfänger übermittelt wird oder nicht. Dieser Bericht hat Sie geführt PGP -Verschlüsselung In Java Verwendung der RSA Algorithmus. Darüber hinaus haben wir auch ein JAVA -Programm für die PGP -Verschlüsselung und -Delyption in unserem Linux -System gezeigt.