Szyfrowanie PGP w Javie

Szyfrowanie PGP w Javie
PGP Lub Całkiem dobra prywatność Zastosuje kombinację technik szyfrowania, mieszania i kompresji danych w celu szyfrowania i odszyfrowania wiadomości, e -maili i dokumentów. Używa unikalnego systemu kluczowego, w którym „A”Klucz publiczny”I„Prywatny klucz”Są przypisane użytkownikowi. Na przykład, gdy użytkownik próbuje wysłać wiadomość, wykorzystując swój klucz publiczny, PGP szyfruje ten konkretny komunikat, który pomaga zabezpieczyć ją podczas transmisji. Następnie, po otrzymaniu zaszyfrowanej wiadomości, odbiorca lub odbiorca używa swojego klucza prywatnego do odszyfrowania wiadomości.

Szyfrowanie PGP z algorytmem RSA

Keyypir PGP można wygenerować przy użyciu różnych algorytmów szyfrowania; Jednak kiedy ręcznie generujesz klucze PGP, zapewnia on RSA jako opcja domyślna algorytm. Algorytm RSA został stworzony przez „Rivest-Shamir-Adlemant" W 1978. Wykorzystuje klucze publiczne i prywatne do szyfrowania danych i deszyfrowania. Na przykład klient wysyła serwer swój klucz publiczny i żąda niektórych danych. Następnie serwer szyfruje dane za pomocą klucza publicznego klienta i wysyła je do nich. Po otrzymaniu danych klient odszyfiera je, wykorzystując swój klucz prywatny.

RSA pozwala na zabezpieczenie pliku lub wiadomości przed ich wysłaniem. Korzystanie z RSA w metodzie szyfrowania PGP umożliwia poświadczenie danych, więc odbiornik wie, czy jest ono zmienione lub zmodyfikowane podczas transmisji. Ten pismo będzie cię poprowadzić Szyfrowanie PGP W Jawa używając RSA algorytm. Ponadto zademonstrujemy również program Java dla szyfrowania i deszyfrowania PGP w Linux. A więc zacznijmy!

Notatka: Przed wskoczeniem do procesu szyfrowania PGP w Javie zainstaluj Java JDK w systemie Linux, jeśli jeszcze tego nie masz.

Jak zainstalować Java JDK 17 w Linux

Aby zainstalować Java JDK 17 Po pierwsze na twoim systemie naciśnij „Ctrl+alt+t„Aby otworzyć terminal, a następnie wykonać następujące polecenie Curl:

$ curl -o https: // pobierz.wyrocznia.com/java/17/najnowszy/jdk-17_linux-x64_bin.smoła.GZ

Bezbłędne wyjście deklaruje, że pobieranie jest zakończone. Teraz wyodrębnimy „JDK-17_linux-x64_bin.smoła.GZ”Z pomocą poniżej danego„smoła" Komenda:

$ tar -xvf jdk-17_linux-x64_bin.smoła.GZ

W następnym kroku przeniesiemy „JDK-17.0.1”Wyodrębniono katalog do„/optować/" Lokalizacja:

$ sudo mv jdk-17.0.1 /opt /jdk17

Następnie ustaw zmienną środowiskową Java i dodaj ścieżkę:

$ Export java_home =/opt/jdk17

Do tego momentu zainstalowałeś i skonfigurowałeś Java JDK w systemie. W przypadku wersji weryfikacji wpisz „Jawa„Polecenie z„-wersja" opcja:

$ java --version

Szyfrowanie PGP w Javie za pomocą RSA

Teraz pójdziemy naprzód i stworzymy program Java do szyfrowania i odszyfrowywania wiadomości za pomocą kluczy PGP. Algorytm, którego zamierzamy użyć, to „RSA", z "PKCS1”Wyściółka i„EBC”Tryb blokowy. „„EBC”Lub elektroniczny tryb książki kodu to najprostsze podejście zastosowane do przetwarzania sekwencji bloków wiadomości, podczas gdy„PKSC1„Padding pomaga RSA w definiowaniu właściwości matematycznych pary klucza PGP i procesu szyfrowania.

Przede wszystkim stworzymy „RSA" klasa:

Klasa publiczna RSA

Ten "RSA„Klasa będzie miała dwie zmienne,„ The ”prywatny klucz”I„ „klucz publiczny”:

Private PrivateKey PrivateKey;
prywatna publiczna publiczna;

Przypisamy wartość do zdefiniowanych kluczy PGP za pomocą „Keyyairgenerator". „„Keyyairgenerator”Wykorzysta„RSA„Algorytm generowania wartości klawiatury PGP w konstruktorze klasy RSA:

public rsa ()
próbować
Generator klawiatury = klawiatura.GetInstance („RSA”);
generator.inicjować (1024);
Para klawiatury = generator.generateeyPair ();
privateKey = para.getPrivate ();
publicKey = para.getPublic ();
catch (wyjątek ignorowany)

W następnym kroku stworzymy „kodować()" I "rozszyfrować()„Funkcja, która będzie używana do kodowania i dekodowania wiadomości za pomocą„Base64”(Binarny do tekstu) enkoder i dekoder:

Private String Encode (byte [] data)
Return Base64.getenCoder ().enkodetoString (dane);

private bajte [] dekoduj (dane string)
Return Base64.getDecoder ().dekodować (dane);

Teraz dodaj Szypt () Funkcja w klasie RSA. W "Szypt ()”Funkcja najpierw przekonwertujemy dodaną wiadomość do bajtów, ponieważ określone szyfrowanie można wykonać za pomocą tablicy bajt. Po zrobieniu tego określamy algorytm, tryb blokowy i wyściółkę jako „RSA/ECB/PKCS1Padding" dla "szyfr" obiekt. Następnie zainicjujemy szyfr za pomocą „Encrypt_mode”I PGP„klucz publiczny".

Ta funkcja Encrypt () użyje naszego PGP „klucz publiczny„Aby zaszyfrować wiadomość i zwrócić zaszyfrowane bajty:

Public String Szypt (wiadomość String) rzuca wyjątek
bajt [] messagetobytes = wiadomość.getBytes ();
Szyfr szyfrów = szyfr.getInstance („RSA/ecb/pkcs1padding”);
szyfr.init (szyfr.Encrypt_mode, publickey);
bajt [] encryptedBytes = szyfr.dofinal (Messagetobytes);
return encode (EncryptedBytes);

Podobnie zdefiniujemy inną funkcję o nazwie „decrypt ()„Aby zdekodować struny, które używają naszego PGP”prywatny klucz„Aby odszyfrować zaszyfrowaną wiadomość w „Decrypt_mode” i zwróć odszyfrowaną tablicę:

public String decrypt (String SnanryptedMessage) rzuca wyjątek
bajte [] enciptedBytes = dekodowanie (encryptedMessage);
Szyfr szyfrów = szyfr.getInstance („RSA/ecb/pkcs1padding”);
szyfr.init (szyfr.Decrypt_mode, privateKey);
bajt [] decryptedMessage = szyfr.dofinal (EncryptedBytes);
zwróć nowy ciąg (decryptedMessage, „UTF8”);

Teraz sprawdźmy "główny()" Funkcjonalność metody. W "główny(),”Po pierwsze, zdefiniujemy dwa struny„Szyfrowanie Message" I "decryptedMessage". „Szyfrowanie” będzie obejmować zaszyfrowaną formę naszego dodanego ciągu „To jest Linuxhint.com„Które będziemy zaszyfrować za pomocą funkcji RSA Encrypt () i„decryptedMessage„Zmienna będzie przechowywać odszyfrowaną wiadomość:

public static void main (string [] args)
Rsa rsa = new rsa ();
próbować
String EncryptedMessage = RSA.szyfruj („To jest Linuxhint.com ”);
String decryptedMessage = RSA.decrypt (EncryptedMessage);
System.błądzić.println („Szyfrowanie: \ n”+encryptedMessage);
System.błądzić.println („odszyfrowany: \ n”+decryptedMessage);
catch (wyjątek ignorowany)

Wdrożenie szyfrowania PGP w Javie

Mamy nadzieję, że nasze podane instrukcje pomogły ci zrozumieć powyższy kod. W tej sekcji zaimplementowano dostarczone kod Java szyfrowania PGP w naszym systemie Linux, aby pokazać swoje dane wyjściowe. W tym celu najpierw stworzymy „RSA.Jawa”Plik Java za pomocą„Nano„Redaktor:

$ sudo nano rsa.Jawa

Twój "RSA.Jawa" Plik początkowo będzie wyglądał tak:

Teraz dodaj następujący kod w swoim „RSA.Jawa”Plik i naciśnij„Ctrl+o„Aby zapisać dodane zmiany:

importować Javax.Krypto.Szyfr;
Importuj Java.bezpieczeństwo.Klawiaturę;
Importuj Java.bezpieczeństwo.Keyyairgenerator;
Importuj Java.bezpieczeństwo.Prywatny klucz;
Importuj Java.bezpieczeństwo.Klucz publiczny;
Importuj Java.Util.Base64;
Klasa publiczna RSA
Private PrivateKey PrivateKey;
prywatna publiczna publiczna;
public rsa ()
próbować
Generator klawiatury = klawiatura.GetInstance („RSA”);
generator.inicjować (1024);
Para klawiatury = generator.generateeyPair ();
privateKey = para.getPrivate ();
publicKey = para.getPublic ();
catch (wyjątek ignorowany)


Public String Szypt (wiadomość String) rzuca wyjątek
bajt [] messagetobytes = wiadomość.getBytes ();
Szyfr szyfrów = szyfr.getInstance („RSA/ecb/pkcs1padding”);
szyfr.init (szyfr.Encrypt_mode, publickey);
bajt [] encryptedBytes = szyfr.dofinal (Messagetobytes);
return encode (EncryptedBytes);

Private String Encode (byte [] data)
Return Base64.getenCoder ().enkodetoString (dane);

public String decrypt (String SnanryptedMessage) rzuca wyjątek
bajte [] enciptedBytes = dekodowanie (encryptedMessage);
Szyfr szyfrów = szyfr.getInstance („RSA/ecb/pkcs1padding”);
szyfr.init (szyfr.Decrypt_mode, privateKey);
bajt [] decryptedMessage = szyfr.dofinal (EncryptedBytes);
zwróć nowy ciąg (decryptedMessage, „UTF8”);

private bajte [] dekoduj (dane string)
Return Base64.getDecoder ().dekodować (dane);

public static void main (string [] args)
Rsa rsa = new rsa ();
próbować
String EncryptedMessage = RSA.szyfruj („To jest Linuxhint.com ”);
String decryptedMessage = RSA.decrypt (EncryptedMessage);
System.błądzić.println („Szyfrowanie: \ n”+encryptedMessage);
System.błądzić.println („odszyfrowany: \ n”+decryptedMessage);
catch (wyjątek ignorowany)

Następnie skompiluj „RSA.Jawa”Plik, pisząc następujące polecenie:

$ Javac RSA.Jawa

Kompilacja określonego pliku spowoduje „RSA„Plik binarny, wykonaj go, aby uzyskać wyjście szyfrowania i deszyfrowania PGP w terminalu Linux:

$ Java RSA

Ze wyjścia możesz sprawdzić szyfrowane i odszyfrowane sznurki:

Wniosek

Szyfrowanie PGP pozwala bezpiecznie wysyłać wiadomości lub e -maile za pomocą kombinacji „Publiczny" I "Prywatny" Klucze. Aby pokazać, że nadawca jest prawowitym właścicielem komunikacji, stanowi podpis cyfrowy dla kluczy prywatnych i publicznych. Szyfrowanie PGP jest również używane do potwierdzenia, czy wiadomość jest dostarczana do zamierzonego odbiornika, czy nie. Ten napisał cię o tym Szyfrowanie PGP W Jawa używając RSA algorytm. Ponadto zademonstrowaliśmy program Java do szyfrowania i deszyfrowania PGP w naszym systemie Linux.