English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Un code simple et complet, à travers ce code, vous découvrirez l'implémentation de l'algorithme de chiffrement RSA en Java. Cette classe, vous pouvez l'utiliser directement, et pour ceux qui sont plus avancés, vous pouvez améliorer le code.
package security; import java.security.*; import java.security.spec.*; import java.security.interfaces.*; import javax.crypto.spec.*; import javax.crypto.interfaces.*; import java.io.*; import java.math.*; public class RSADemo { public RSADemo() { } public static void generateKey() { try { KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(1024); KeyPair kp = kpg.genKeyPair(); PublicKey pbkey = kp.getPublic(); PrivateKey prkey = kp.getPrivate(); // Enregistrer la clé publique FileOutputStream f1 = new FileOutputStream("pubkey.dat"); ObjectOutputStream b1 = new ObjectOutputStream(f1); b1.writeObject(pbkey); // enregistrer la clé privée FileOutputStream f2 = new FileOutputStream("privatekey.dat"); ObjectOutputStream b2 = new ObjectOutputStream(f2); b2.writeObject(prkey); } catch (Exception e) { } } public static void encrypt() throws Exception { String s = "Hello World!"; // obtenir la clé publique et les paramètres e, n FileInputStream f = new FileInputStream("pubkey.dat"); ObjectInputStream b = new ObjectInputStream(f); RSAPublicKey pbk = (RSAPublicKey) b.readObject(); BigInteger e = pbk.getPublicExponent(); BigInteger n = pbk.getModulus(); System.out.println("e= ", + ); System.out.println("n= "); + n); // obtenir le texte clair m byte ptext[] = s.getBytes("UTF-8"); BigInteger m = new BigInteger(ptext); // calculer le texte chiffré c BigInteger c = m.modPow(e, n); System.out.println("c= ", + c); // enregistrer le texte chiffré String cs = c.toString(); BufferedWriter out = new BufferedWriter( new OutputStreamWriter(new FileOutputStream("encrypt.dat"))); out.write(cs, 0, cs.length()); out.close(); } public static void decrypt() throws Exception { // lire le texte chiffré BufferedReader in = new BufferedReader( new InputStreamReader(new FileInputStream("encrypt.dat"))); String ctext = in.readLine(); BigInteger c = new BigInteger(ctext); // Lire la clé privée FileInputStream f = new FileInputStream("privatekey.dat"); ObjectInputStream b = new ObjectInputStream(f); RSAPrivateKey prk = (RSAPrivateKey) b.readObject(); BigInteger d = prk.getPrivateExponent(); // Obtenir les paramètres du clé privé et le déchiffrement BigInteger n = prk.getModulus(); System.out.println("d= "); + d); System.out.println("n= "); + n); BigInteger m = c.modPow(d, n); // Afficher le résultat du déchiffrement System.out.println("m= "); + m); byte[] mt = m.toByteArray(); System.out.println("Texte en clair est "); for (int i = 0; i < mt.length; i++) { System.out.print((char) mt[i]); } } public static void main(String args[]) { try { generateKey(); encrypt(); decrypt(); } catch (Exception e) { System.out.println(e.toString()); } } }
La méthode simple d'implémentation java de l'algorithme de chiffrement RSA ci-dessus que je partage avec vous est tout le contenu que j'ai partagé. J'espère que cela vous servira de référence et que vous continuerez à soutenir le tutoriel d'hurlement.