English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Méthode simple d'implémentation de l'algorithme de chiffrement RSA en Java (à voir impérativement)

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.

Vous pourriez aussi aimer