Cryptage PGP en Java

Cryptage PGP en Java
PGP ou assez bonne intimité Emploie une combinaison de techniques de chiffrement, de hachage et de compression des données pour crypter et déchiffrer les messages, les e-mails et les documents. Il utilise un système clé unique, dans lequel un «Clé publique"Et un"Clé privée"Sont affectés à un utilisateur. Par exemple, lorsqu'un utilisateur essaie d'envoyer un message en utilisant sa clé publique, PGP crypte ce message spécifique qui aide à le sécuriser pendant la transmission. Ensuite, après avoir reçu le message crypté, le destinataire ou le récepteur utilise sa clé privée pour décrypter le message.

Cryptage PGP avec algorithme RSA

Le clés PGP peut être généré à l'aide d'une variété d'algorithmes de chiffrement; Cependant, lorsque vous générez manuellement les clés PGP, elle fournit RSA comme l'option d'algorithme par défaut. L'algorithme RSA a été créé par «Rivest-shamir-adleman" dans 1978. Il utilise des clés publiques et privées pour le cryptage et le décryptage des données. Par exemple, un client envoie au serveur sa clé publique et demande certaines données. Ensuite, le serveur crypte les données à l'aide de la clé publique du client et les envoie. Après avoir reçu les données, le client le décrypte en utilisant sa clé privée.

RSA vous permet de sécuriser votre fichier ou votre message avant de les envoyer. L'utilisation de RSA dans la méthode de chiffrement PGP vous permet de certifier vos données, de sorte que le récepteur sait s'il est modifié ou modifié pendant la transmission. Cet article vous guidera sur Cryptage PGP dans Java en utilisant le RSA algorithme. De plus, nous démontrerons également un programme Java pour le cryptage et le déchiffrement PGP dans Linux. Alors, commençons!

Note: Avant de sauter dans le processus de chiffrement PGP en Java, installez Java JDK sur votre système Linux si vous ne l'avez pas déjà.

Comment installer Java JDK 17 à Linux

Pour installer Java JDK 17 Sur votre système, tout d'abord, appuyez sur "Ctrl + alt + t”Pour ouvrir le terminal, puis exécuter la commande curl suivante:

$ curl -o https: // télécharger.oracle.com / java / 17 / dernier / jdk-17_linux-x64_bin.le goudron.gz

La sortie sans erreur déclare que le téléchargement est terminé. Maintenant, nous allons extraire le «JDK-17_LINUX-X64_BIN.le goudron.gz"Avec l'aide du dix-soi-disant"le goudron" commande:

$ TAR -XVF JDK-17_LINUX-X64_BIN.le goudron.gz

Dans la prochaine étape, nous déplacerons le «JDK-17.0.1»Répertoire extrait au«/opter/" emplacement:

$ sudo mv jdk-17.0.1 / opt / jdk17

Après cela, définissez la variable d'environnement Java et ajoutez le chemin:

$ export java_home = / opt / jdk17

Jusqu'à ce point, vous avez installé et configuré Java JDK sur votre système. Pour la version de vérification, tapez le «Java«Commande avec le«-version" option:

$ Java - Version

Encryption PGP en Java en utilisant RSA

Maintenant, nous allons avancer et créer un programme Java pour chiffrer et décrypter un message à l'aide de clés PGP. L'algorithme que nous allons utiliser est «RSA", avec "PKCS1"Tampon et"BCE»Mode de blocage. Le "BCE»Ou le mode de livre de code électronique est l'approche la plus simple utilisée pour traiter une séquence de blocs de messages, tandis que le«Pkc1«Le rembourrage aide RSA à définir les propriétés mathématiques de la paire de clés PGP et du processus de chiffrement.

Tout d'abord, nous créerons un «RSA" classe:

classe publique rsa

Ce "RSA«La classe aura deux variables, le«Clé privée" et le "Clé publique»:

Private PrivateKey Privatekey;
Private PublicKey Publickey;

Nous attribuerons la valeur aux clés PGP définies en utilisant un «Keypairgenerator". Le "Keypairgenerator"Je vais utiliser le"RSA”Algorithme pour générer les valeurs PGP KeyPair dans le constructeur de la classe RSA:

public rsa ()
essayer
Génératrice de KeyPairGenerator = KeyPairGenerator.getInstance ("RSA");
Générateur.initialiser (1024);
Paire de clés = générateur.GenerateKeyPair ();
PrivateKey = paire.getPrivate ();
publicy = paire.getPublic ();
catch (exception ignorée)

Dans la prochaine étape, nous créerons un «encoder()" et "décoder()”Fonction qui sera utilisée pour le codage et le décodage du message avec le«base64»(Binaire à Texte) Encodeur et décodeur:

Encode de chaîne privée (data byte [])
Retour Base64.getEncoder ().EncodetoString (données);

octet privé [] Decode (Data String)
Retour Base64.getDecOder ().Decode (données);

Maintenant, ajoutez un Crypter() fonction dans la classe RSA. Dans le "Crypter()”Fonction, nous allons d'abord convertir le message ajouté en octets car le chiffrement spécifié peut être effectué en utilisant un tableau d'octets. Après cela, nous spécifierons l'algorithme, le mode bloc et le rembourrage comme «RSA / ECB / PKCS1PADDING" pour un "chiffrer" objet. Ensuite, nous initialiserons le chiffre avec le «Crypt_mode"Et le PGP"Clé publique".

Cette fonction Encrypt () utilisera notre PGP "Clé publique«Pour crypter le message et renvoyer les octets cryptés:

Public String Encrypt (message de chaîne) lève l'exception
octet [] MessagetoBytes = message.GetBytes ();
Chiffre chiffre = chiffre.getInstance ("RSA / ECB / PKCS1PADDING");
chiffrer.init (chiffre.Encrypt_Mode, PublicKey);
octet [] cryptedBytes = Cipher.Dofinal (MessagetoBytes);
RETOUR ENCODE (ECRYPTEDBYTES);

De même, nous définirons une autre fonction nommée «Decrypt ()"Pour décoder les chaînes qui utiliseront notre PGP"Clé privée«Pour décrypter le message crypté dans le "Decrypt_Mode" et retournez le tableau déchiffré:

Public String Decrypt (String EncryptedMessage) lève l'exception
octet [] EncryptedBytes = Decode (EncryptedMessage);
Chiffre chiffre = chiffre.getInstance ("RSA / ECB / PKCS1PADDING");
chiffrer.init (chiffre.Decrypt_mode, privateKey);
octet [] décrypté duvus = chiffre.Dofinal (EcryptedBytes);
return new String (decryptedMessage, "UTF8");

Maintenant, vérifions le "principal()" fonctionnalité de méthode. Dans "principal(),», Premièrement, nous définirons deux cordes"cryptage" et "décryptation". Le «Espérisation de crypte» comprendra la forme cryptée de notre chaîne ajoutée "C'est Linuxhint.com«Que nous crypterons en utilisant la fonction RSA Encrypt (), et la« «décryptation»La variable stockera le message décrypté:

public static void main (String [] args)
RSA RSA = new RSA ();
essayer
String EncryptedMessage = RSA.Encrypt ("c'est Linuxhint.com ");
String DecryCtedMessage = RSA.décrypter (EcryptedMessage);
Système.se tromper.println ("Ecrypted: \ n" + EncryptedMessage);
Système.se tromper.println ("décrypté: \ n" + decryptedMessage);
catch (exception ignorée)

Implémentation du cryptage PGP en Java

Nous espérons que nos instructions données vous ont aidé à comprendre le code donné ci-dessus. Cette section implémentera le code Java de cryptage PGP fourni sur notre système Linux pour vous montrer sa sortie. À cette fin, premièrement, nous créerons un «RSA.Java«Fichier Java en utilisant le«nano" éditeur:

$ sudo nano rsa.Java

Ton "RSA.Java" Le fichier ressemblera initialement à ceci:

Maintenant, ajoutez le code suivant dans votre "RSA.Java«Fichier et appuyez sur«Ctrl + o«Pour enregistrer les modifications supplémentaires:

Importer Javax.crypto.Chiffrer;
Importer Java.sécurité.Clés;
Importer Java.sécurité.KeyPairGenerator;
Importer Java.sécurité.Clé privée;
Importer Java.sécurité.Clé publique;
Importer Java.user.Base64;
classe publique rsa
Private PrivateKey Privatekey;
Private PublicKey Publickey;
public rsa ()
essayer
Génératrice de KeyPairGenerator = KeyPairGenerator.getInstance ("RSA");
Générateur.initialiser (1024);
Paire de clés = générateur.GenerateKeyPair ();
PrivateKey = paire.getPrivate ();
publicy = paire.getPublic ();
catch (exception ignorée)


Public String Encrypt (message de chaîne) lève l'exception
octet [] MessagetoBytes = message.GetBytes ();
Chiffre chiffre = chiffre.getInstance ("RSA / ECB / PKCS1PADDING");
chiffrer.init (chiffre.Encrypt_Mode, PublicKey);
octet [] cryptedBytes = Cipher.Dofinal (MessagetoBytes);
RETOUR ENCODE (ECRYPTEDBYTES);

Encode de chaîne privée (data byte [])
Retour Base64.getEncoder ().EncodetoString (données);

Public String Decrypt (String EncryptedMessage) lève l'exception
octet [] EncryptedBytes = Decode (EncryptedMessage);
Chiffre chiffre = chiffre.getInstance ("RSA / ECB / PKCS1PADDING");
chiffrer.init (chiffre.Decrypt_mode, privateKey);
octet [] décrypté duvus = chiffre.Dofinal (EcryptedBytes);
return new String (decryptedMessage, "UTF8");

octet privé [] Decode (Data String)
Retour Base64.getDecOder ().Decode (données);

public static void main (String [] args)
RSA RSA = new RSA ();
essayer
String EncryptedMessage = RSA.Encrypt ("c'est Linuxhint.com ");
String DecryCtedMessage = RSA.décrypter (EcryptedMessage);
Système.se tromper.println ("Ecrypted: \ n" + EncryptedMessage);
Système.se tromper.println ("décrypté: \ n" + decryptedMessage);
catch (exception ignorée)

Ensuite, compilez le «RSA.Java”Fichier en écrivant la commande suivante:

$ Javac RSA.Java

La compilation du fichier spécifié en résultera un «RSA”Fichier binaire, exécutez-le pour obtenir la sortie du cryptage et du déchiffrement PGP dans votre terminal Linux:

$ java rsa

À partir de la sortie, vous pouvez consulter les chaînes cryptées et décryptées:

Conclusion

Le cryptage PGP vous permet d'envoyer des messages ou des e-mails en toute sécurité en utilisant sa combinaison de «Public" et "Privé" clés. Pour montrer qu'un expéditeur est le propriétaire légitime de la communication, il fournit une signature numérique pour les clés privées et publiques. Le cryptage PGP est également utilisé pour confirmer si un message est livré au récepteur prévu ou non. Cet article vous a guidé sur Cryptage PGP dans Java en utilisant le RSA algorithme. De plus, nous avons également démontré un programme Java pour le cryptage et le déchiffrement PGP dans notre système Linux.