English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
أمثلة بسيطة كاملة للكود، من خلال هذا الكود ستكون لديك فهم أولي لتحقيق خوارزمية التشفير RSA في Java، هذا الفئة يمكنك استخدامها مباشرة، ذو مستوى عالٍ من المهارة، يمكنك تعديلها وتحسينها.
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(); // حفظ المفتاح العام FileOutputStream f1 = new FileOutputStream("pubkey.dat"); ObjectOutputStream b1 = new ObjectOutputStream(f1); b1.writeObject(pbkey); // حفظ المفتاح الخاص 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!"; // 获取公钥及参数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= " + e); System.out.println("n= " + n); // 获取明文m byte ptext[] = s.getBytes("UTF-8"); BigInteger m = new BigInteger(ptext); // 计算密文c BigInteger c = m.modPow(e, n); System.out.println("c= " + c); // 保存密文 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 { // 读取密文 BufferedReader in = new BufferedReader( new InputStreamReader(new FileInputStream("encrypt.dat"))); String ctext = in.readLine(); BigInteger c = new BigInteger(ctext); // قراءة المفتاح الخاص FileInputStream f = new FileInputStream("privatekey.dat"); ObjectInputStream b = new ObjectInputStream(f); RSAPrivateKey prk = (RSAPrivateKey) b.readObject(); BigInteger d = prk.getPrivateExponent(); // الحصول على معاملات المفتاح الخاص وتشفير BigInteger n = prk.getModulus(); System.out.println("d= " + d); System.out.println("n= " + n); BigInteger m = c.modPow(d, n); // عرض نتيجة التشفير System.out.println("m= " + m); byte[] mt = m.toByteArray(); System.out.println("PlainText is "); 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()); {} {} {}
هذا المقال بسيط لتطبيق خوارزمية التشفير RSA في Java (مهم) هو كل المحتوى الذي أشاركه لكم. أتمنى أن يكون هناك مرجع جيد وأن أطلب منكم الدعم الكبير لتعليم نافع.