Crittografia PGP in Java

Crittografia PGP in Java
PGP O Privacy abbastanza buona Impiega una combinazione di tecniche di crittografia, hashing e compressione dei dati per crittografare e decrittografare messaggi, e -mail e documenti. Utilizza un sistema chiave unico, in cui un "Chiave pubblica"E un"Chiave privata"Sono assegnati a un utente. Ad esempio, quando un utente cerca di inviare un messaggio utilizzando la propria chiave pubblica, PGP crittografa quel messaggio specifico che aiuta a proteggerlo durante la trasmissione. Quindi, dopo aver ricevuto il messaggio crittografato, il destinatario o il ricevitore utilizzano la loro chiave privata per decrittografare il messaggio.

Crittografia PGP con algoritmo RSA

Il tasto PGP può essere generato utilizzando una varietà di algoritmi di crittografia; Tuttavia, quando si generano manualmente i tasti PGP, fornisce RSA Come opzione algoritmo predefinita. L'algoritmo RSA è stato creato da "Rivest-Shamir-Adleman" In 1978. Utilizza chiavi pubbliche e private per la crittografia e la decrittografia dei dati. Ad esempio, un client invia al server la sua chiave pubblica e richiede alcuni dati. Quindi, il server crittografa i dati con l'aiuto della chiave pubblica del client e li invia a loro. Dopo aver ricevuto i dati, il client li decrittica utilizzando la sua chiave privata.

RSA ti consente di proteggere il tuo file o messaggio prima di inviarli. L'uso di RSA nel metodo di crittografia PGP consente di certificare i tuoi dati, quindi il ricevitore sa se viene modificato o modificato durante la trasmissione. Questo articolo ti guiderà Crittografia PGP In Giava usando il RSA algoritmo. Inoltre, dimostreremo anche un programma Java per la crittografia e la decrittografia PGP in Linux. Quindi iniziamo!

Nota: Prima di saltare nel processo di crittografia PGP in Java, installa Java JDK sul tuo sistema Linux se non lo hai già.

Come installare Java JDK 17 in Linux

Per installare Java JDK 17 Sul tuo sistema, in primo luogo, premere "Ctrl+alt+t"Per aprire il terminale e quindi eseguire il seguente comando Curl:

$ curl -o https: // download.oracolo.com/java/17/ultimo/jdk-17_linux-x64_bin.catrame.Gz

L'output senza errori dichiara che il download è completato. Ora estrarremo il "JDK-17_LINUX-X64_BIN.catrame.Gz"Con l'aiuto di sotto il basso"catrame"Comando:

$ tar -xvf jdk-17_linux-x64_bin.catrame.Gz

Nel prossimo passaggio, sposteremo il "JDK-17.0.1"Directory estratto al"/optare/" posizione:

$ sudo MV JDK-17.0.1 /opt /jdk17

Successivamente, imposta la variabile di ambiente Java e aggiungi il percorso:

$ esporta java_home =/opt/jdk17

Fino a questo punto, hai installato e configurato Java JDK sul tuo sistema. Per la versione di verifica, digita "GiavaComando "con il"-versione" opzione:

$ java -version

Crittografia PGP in Java usando RSA

Ora andremo avanti e creeremo un programma Java per crittografare e decrittografare un messaggio con l'aiuto delle chiavi PGP. L'algoritmo che useremo è "RSA", con "PKCS1"Imbottitura e"BCE"Modalità blocco. IL "BCE"O la modalità del libro di codice elettronico è l'approccio più semplice utilizzato per elaborare una sequenza di blocchi di messaggi, mentre"PKSC1"L'imbottitura assiste RSA nella definizione delle proprietà matematiche della coppia di chiavi PGP e del processo di crittografia.

Prima di tutto, creeremo un "RSA" classe:

Classe pubblica RSA

Questo "RSA"La classe avrà due variabili, il"PrivateKey" e il "chiave pubblica":

Private PrivateKey PrivateKey;
PublicKey PublicKey privato;

Assegneremo il valore ai tasti PGP definiti usando un "Keypairgenerator". IL "Keypairgenerator"Utilizzerà il"RSA"Algoritmo per generare i valori della tastiera PGP nel costruttore della classe RSA:

public rsA ()
Tentativo
KeyPairGenerator Generator = KeyPairGenerator.getInstance ("RSA");
Generatore.Inizializza (1024);
KeyPair Pair = Generatore.generareKeyPair ();
PrivateKey = coppia.getPrivate ();
publickey = coppia.getPublic ();
catch (eccezione ignorata)

Nel prossimo passaggio, creeremo un "codificare()" E "decodificare()"Funzione che verrà utilizzata per la codifica e la decodifica del messaggio con il"Base64"(Binario al testo) encoder e decodificatore:

Private String ENCODE (BYTE [] Data)
restituire base64.getEncoder ().codetostring (dati);

Byte privato [] decode (String Data)
restituire base64.getDecoder ().decodificare (dati);

Ora aggiungi un crittografico () funzione nella classe RSA. Nel "crittografico ()"Funzione, convertiremo prima il messaggio aggiunto in byte poiché la crittografia specificata può essere eseguita usando un array di byte. Dopo averlo fatto, specificheremo l'algoritmo, la modalità di blocco e l'imbottitura come "RSA/ECB/PKCS1Padding" per un "cifra"Oggetto. Quindi, inizializzeremo la cifra con il "Cript_mode"E il PGP"chiave pubblica".

Questa funzione crittografa () utilizzerà il nostro PGP "chiave pubblica"Per crittografare il messaggio e restituire i byte crittografati:

public String Crypt (String Message) lancia un'eccezione
byte [] messageTobytes = messaggio.getBytes ();
Cifra cifra = cifra.getInstance ("RSA/ECB/PKCS1Padding");
cifra.init (cifra.Cript_mode, publickey);
byte [] criptedbytes = cipher.dofinale (messagetobytes);
return code (criptedbytes);

Allo stesso modo, definiremo un'altra funzione chiamata "decrypt ()"Per decodificare le stringhe che useranno il nostro PGP"PrivateKey"Per decrittografare il messaggio crittografato nel "Decrypt_mode" e restituire l'array decrittografato:

public String decrypt (string criptedMessage) lancia un'eccezione
byte [] criptedBytes = decode (criptedMessage);
Cifra cifra = cifra.getInstance ("RSA/ECB/PKCS1Padding");
cifra.init (cifra.Decrypt_mode, privateKey);
byte [] decryptedMessage = cipher.dofinal (criptedbytes);
restituire nuova stringa (decryptedMessage, "UTF8");

Ora, controlliamo il "principale()" funzionalità del metodo. In "principale(),"In primo luogo, definiremo due stringhe"crittogrammessage" E "decrittografato". IL "CryptedMessage" comprenderà la forma crittografata della nostra stringa aggiunta "Questo è Linuxhint.com"Che crittograferemo usando la funzione RSA crittografiche () e"decrittografato"La variabile memorizzerà il messaggio decrittografato:

public static void main (string [] args)
RSA RSA = new RSA ();
Tentativo
String CryptedMessage = RSA.crittografia ("Questo è Linuxhint.com ");
String decryptedMessage = RSA.decrypt (criptedMessage);
Sistema.err.println ("crittografato: \ n"+criptedMessage);
Sistema.err.println ("decrittografato: \ n"+decryptedMessage);
catch (eccezione ignorata)

Implementazione della crittografia PGP in Java

Speriamo che le nostre istruzioni fornite ti abbiano aiutato a capire il codice sopra dato. Questa sezione implementerà il codice Java di crittografia PGP PGP sul nostro sistema Linux per mostrarti il ​​suo output. A tale scopo, in primo luogo, creeremo un "RSA.Giava”File java usando il"nano"Editore:

$ sudo nano rsa.Giava

Tuo "RSA.Giava" Il file sarà inizialmente così:

Ora, aggiungi il seguente codice nel tuo "RSA.Giava"File e premere"Ctrl+O"Per salvare le modifiche aggiunte:

Importa Javax.cripto.Cifra;
Importa Java.sicurezza.Tastiera;
Importa Java.sicurezza.Keypairgenerator;
Importa Java.sicurezza.PrivateKey;
Importa Java.sicurezza.Chiave pubblica;
Importa Java.util.Base64;
Classe pubblica RSA
Private PrivateKey PrivateKey;
PublicKey PublicKey privato;
public rsA ()
Tentativo
KeyPairGenerator Generator = KeyPairGenerator.getInstance ("RSA");
Generatore.Inizializza (1024);
KeyPair Pair = Generatore.generareKeyPair ();
PrivateKey = coppia.getPrivate ();
publickey = coppia.getPublic ();
catch (eccezione ignorata)


public String Crypt (String Message) lancia un'eccezione
byte [] messageTobytes = messaggio.getBytes ();
Cifra cifra = cifra.getInstance ("RSA/ECB/PKCS1Padding");
cifra.init (cifra.Cript_mode, publickey);
byte [] criptedbytes = cipher.dofinale (messagetobytes);
return code (criptedbytes);

Private String ENCODE (BYTE [] Data)
restituire base64.getEncoder ().codetostring (dati);

public String decrypt (string criptedMessage) lancia un'eccezione
byte [] criptedBytes = decode (criptedMessage);
Cifra cifra = cifra.getInstance ("RSA/ECB/PKCS1Padding");
cifra.init (cifra.Decrypt_mode, privateKey);
byte [] decryptedMessage = cipher.dofinal (criptedbytes);
restituire nuova stringa (decryptedMessage, "UTF8");

Byte privato [] decode (String Data)
restituire base64.getDecoder ().decodificare (dati);

public static void main (string [] args)
RSA RSA = new RSA ();
Tentativo
String CryptedMessage = RSA.crittografia ("Questo è Linuxhint.com ");
String decryptedMessage = RSA.decrypt (criptedMessage);
Sistema.err.println ("crittografato: \ n"+criptedMessage);
Sistema.err.println ("decrittografato: \ n"+decryptedMessage);
catch (eccezione ignorata)

Successivamente, compila il “RSA.Giava"File scrivendo il seguente comando:

$ javac RSA.Giava

La compilazione del file specificato si tradurrà a "RSA"File binario, eseguilo per ottenere l'output di crittografia e decrittografia PGP nel tuo terminale Linux:

$ Java RSA

Dall'output, è possibile controllare le stringhe crittografate e decrittografate:

Conclusione

La crittografia PGP consente di inviare messaggi o e -mail in modo sicuro utilizzando la sua combinazione di "Pubblico" E "Privato"Chiavi. Per dimostrare che un mittente è il legittimo proprietario della comunicazione, fornisce una firma digitale per le chiavi private e pubbliche. La crittografia PGP viene utilizzata anche per confermare se un messaggio viene consegnato al ricevitore previsto o meno. Questo articolo ti ha guidato Crittografia PGP In Giava usando il RSA algoritmo. Inoltre, abbiamo anche dimostrato un programma Java per la crittografia e la decrittografia PGP nel nostro sistema Linux.