تصف هذه المقالة خوارزمية تشفير RSA وفك التشفير المنفذة في Java. شاركه للرجوع إليه ، على النحو التالي:
استيراد java.awt.alphacomposite ؛ استيراد java.awt.color ؛ استيراد java.awt.font java.io.fileInputStream ؛ import java.io.fileOutputStream ؛ import java.io.objectinputstream ؛ import java.io.objectoututream ؛ import java.security.key java.security.Interfaces.rsapRivateKey ؛ استيراد java.security.Interfaces.rsapublickey ؛ استيراد javax.crypto.cipher ؛ فئة عامة rsautils {فشل ملف static public static "؛ TREE {// keypairgenerator يستخدم لإنشاء أزواج المفاتيح العامة والخاصة ، ويتم إنشاء الكائن بناءً على خوارزمية RSA. keypairgenerator gen = keypairgenerator.getInstance ("RSA") ؛ // تهيئة مولد زوج المفاتيح ، حجم المفتاح هو 1024 بت Gen.Initialize (1024) ؛ // // إنشاء رقم عشوائي قوي // securerandom عشوائي = جديد securerandom () ؛ // gen.initialize (1024 ، عشوائي) ؛ // إنشاء زوج مفتاح وحفظه في زوج Keypair الزوج = gen.generateKeyPair () ؛ // احصل على المفتاح الخاص RSAPRivateKey prikey = (rsApRivateKey) pair.getPrivin () ؛ // احصل على المفتاح العام rsapublickey pubKey = (rsapublickey) pair.getPublic () ؛ // إنشاء ملف مفتاح خاص ObjectOutputStream OS = جديد ObjectOutputStream (FileOutputStream جديد (prikeyfile)) ؛ OS.WriteObject (prikey) ؛ os.flush () ؛ OS.Close () ؛ // إنشاء ملف المفتاح العام OS = جديد ObjectOutputStream (FileOutputStream جديد (PubKeyFile)) ؛ OS.WriteObject (pubKey) ؛ os.flush () ؛ OS.Close () ؛ result = "إنشاء ملف المفتاح العام ["+pubKeyfile+"] إنشاء ملف مفتاح خاص ["+prikeyfile+"]" ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } نتيجة الإرجاع ؛ } public static void main (string [] args) {try {string pubfile = "f: /images/pub.key" ؛ ترخيص سلسلة = "F: /Images/Pri.key" ؛ نتيجة السلسلة = فارغة ؛ // النتيجة = makekeyfile (pubfile ، الترخيص) ؛ النتيجة = markpupra (pubfile ، الترخيص) ؛ System.out.println (نتيجة) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ }} سلسلة ثابتة في MarkPupra (سلسلة pubfile ، ترخيص السلسلة) {String Results = "Encryption Error حدث" ؛ حاول {ObjectInputStream OS = جديد ObjectInputStream (FileInputStream جديد (pubfile)) ؛ rsapublickey pubkey = (rsapublickey) os.readObject () ؛ OS.Close () ؛ OS = جديد ObjectInputStream (FileInputStream جديد (Prifile)) ؛ rsapRivateKey prikey = (rsapRivateKey) os.ReadObject () ؛ OS.Close () ؛ String utf = "utf-8" ؛ String msg = "## China ٪ من الأشخاص @+_" ؛ // استخدم المفتاح العام لتشفير المفتاح الخاص لفك تشفير System.out.println ("النص الأصلي:" + msg) ؛ byte [] puk = handledata (pubKey ، msg.getBytes (utf) ، 1) ؛ System.out.println ("بيانات الملف المشفرة:" + سلسلة جديدة (PUK ، UTF)) ؛ byte [] dpuk = handledata (prikey ، puk ، 0) ؛ System.out.println ("بيانات الملفات المنكسو:" + سلسلة جديدة (DPUK ، UTF)) ؛ msg = "jd#¥+=#new" ؛ // استخدم المفتاح الخاص لتشفير المفتاح العام لفك تشفير System.out.println ("النص الأصلي:" + msg) ؛ byte [] prk = handledata (prikey ، msg.getBytes (utf) ، 1) ؛ System.out.println ("بيانات الملف المشفرة:" + سلسلة جديدة (PRK ، UTF)) ؛ byte [] dprk = handledata (pubkey ، prk ، 0) ؛ System.out.println ("بيانات الملفات المنكظية:" + سلسلة جديدة (DPRK ، UTF)) ؛ النتائج = "التشفير وفك التشفير الانتهاء" ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } نتائج الإرجاع ؛ } / ** * * * param k * param data * param encrypt 1 Encryption 0 decryption * @return * athrows استثناء * / بايت ثابت عام [] handledata (مفتاح المفتاح ، بايت [] data ، int type) استثناء {key! = null) {cipher ci = if (type == 1) {ci.init (cipher.encrypt_mode ، key) ؛ Byte [] res = ci.dofinal (data) ؛ عودة الدقة ؛ } if (type == 0) {ci.init (cipher.decrypt_mode ، key) ؛ Byte [] res = ci.dofinal (data) ؛ عودة الدقة ؛ }} الإرجاع null ؛ }}ملاحظة: يمكن للأصدقاء المهتمين بالتشفير وفك التشفير أيضًا أن يشير إلى الأدوات عبر الإنترنت لهذا الموقع:
أرسل أدوات التشفير والتشفير عبر الإنترنت (بما في ذلك AES ، DES ، RC4 ، إلخ):
http://tools.vevb.com/password/txt_encode
أداة التشفير عبر الإنترنت MD5:
http://tools.vevb.com/password/createmd5password
أداة تشفير خوارزمية التجزئة عبر الإنترنت:
http://tools.vevb.com/password/hash_encrypt
عبر الإنترنت MD5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160 أداة التشفير:
http://tools.vevb.com/password/hash_md5_sha
sha1/sha224/sha256/sha384/sha512 أداة التشفير:
http://tools.vevb.com/password/sha_encode
لمزيد من المعلومات حول المحتوى المتعلق بـ Java ، يرجى مراجعة موضوعات هذا الموقع: "ملخص مهارات التشغيل الرياضية Java" ، "تعليمي حول هياكل بيانات Java والخوارزميات" ، "ملخص لمهارات Java ومهارات تشغيل السلسلة" ، "ملخص لمهارات عقدة Java" و "ملخص مهارات تشغيل Java Cache"
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.