Artikel ini menjelaskan algoritma enkripsi dan dekripsi RSA yang diimplementasikan di Java. Bagikan untuk referensi Anda, sebagai berikut:
impor java.awt.alphacomposite; impor java.awt.color; impor java.awt.font; impor java.awt.graphics2d; java.io.fileInputStream; import java.io.fileoutputStream; impor java.io.objectInputStream; impor java.io.objectoutputstream; impor java.security.key; impor java.security.keypair; impor java.security.keypairgenerator; seciEpurure. java.security.interfaces.rsaprivateKey; import java.security.interfaces.rsapublickey; import javax.crypto.cipher; kelas publik rsautils {public static MakeKeyFile (string pubkeyfile, string prikeyfile) {string hancur = "creating public dan private pubkeyfile, String PrikeyFile) {string hancur =" Create Public dan Public dan Private (String PubKeyFile, String PrikeyFile) {String Hasil = "Public dan Creating Public dan Public (String PubKeyFile, PrikeyFile) {String Hasil =" Public dan Creating Public dan Public (String PubKeyFile "; Coba {// keypairgenerator digunakan untuk menghasilkan pasangan kunci publik dan pribadi, dan objek dihasilkan berdasarkan algoritma RSA. Keypairgenerator gen = keyPairgenerator.getInstance ("rsa"); // Inisialisasi generator pasangan kunci, ukuran kunci adalah 1024 bit gen.initialize (1024); // // menghasilkan angka acak yang kuat // securerandom acak = new Securerandom (); // gen.initialize (1024, acak); // Hasilkan pasangan kunci dan simpan di pair keypair pair = gen.generatePiPAir (); // Dapatkan kunci pribadi rsaprivateKey prikey = (rsaprivateKey) pair.getprivate (); // Dapatkan kunci publik rsapublickey pubkey = (rsapublickey) pair.getPublic (); // menghasilkan file kunci privat ObjectOutputStream os = new ObjectOutputStream (FileOutputStream baru (prikeyFile)); os.writeObject (prikey); os.flush (); os.close (); // menghasilkan file kunci publik OS = ObjectOutputStream baru (FileOutputStream baru (pubkeyFile)); OS.WriteObject (PubKey); os.flush (); os.close (); hasil = "Hasilkan file kunci publik ["+pubkeyfile+"] menghasilkan file kunci pribadi ["+prikeyfile+"]"; } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; } public static void main (string [] args) {coba {string pubfile = "f: /images/pub.key"; String lisensi = "f: /images/pri.key"; Hasil string = null; // hasil = makeKeyFile (pubfile, lisensi); hasil = MarkPupra (pubfile, lisensi); System.out.println (hasil); } catch (Exception e) {E.PrintStackTrace (); }} public static string markPupra (string pubfile, string lisensi) {string result = "Terjadi kesalahan enkripsi"; coba {ObjectInputStream OS = ObjectInputStream baru (FileInputStream baru (pubfile)); Rsapublickey pubkey = (rsapublickey) os.readObject (); os.close (); OS = ObjectInputStream baru (FileInputStream baru (prifile)); RsaprivateKey prikey = (rsaprivateKey) os.readObject (); os.close (); String utf = "UTF-8"; String msg = "## cina % dari % orang @+_"; // Gunakan kunci publik untuk mengenkripsi kunci pribadi untuk mendekripsi system.out.println ("Teks Asli:" + msg); byte [] puk = handleData (pubkey, msg.getbytes (utf), 1); System.out.println ("Data File Dienkripsi:" + String Baru (PUK, UTF)); byte [] dpuk = handledata (prikey, puk, 0); System.out.println ("Data File Dekripsi:" + String Baru (DPUK, UTF)); msg = "jd#kami ¥+=#baru"; // Gunakan kunci pribadi untuk mengenkripsi kunci publik untuk mendekripsi system.out.println ("Teks Asli:" + MSG); byte [] prk = handledata (prikey, msg.getbytes (utf), 1); System.out.println ("Data File Dienkripsi:" + String Baru (PRK, UTF)); byte [] dprk = handledata (pubkey, prk, 0); System.out.println ("Data File Dekripsi:" + String Baru (DPRK, UTF)); hasil = "enkripsi dan dekripsi selesai"; } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; } / ** * * @param k * @param data * @param enkripsi 1 enkripsi 0 dekripsi * @return * @throws Exception * / public static byte [] handleData (kunci kunci, byte [] data, tipe int) lemparan pengecualian {if (key! = null) {cipher ci = cipher.getin.getin. if (type == 1) {ci.init (cipher.encrypt_mode, key); byte [] res = ci.dofinal (data); Return Res; } if (type == 0) {ci.init (cipher.decrypt_mode, key); byte [] res = ci.dofinal (data); Return Res; }} return null; }}PS: Teman yang tertarik dengan enkripsi dan dekripsi juga dapat merujuk pada alat online dari situs ini:
Teks Enkripsi Online dan Alat Dekripsi (termasuk AES, DES, RC4, dll.):
http://tools.vevb.com/password/txt_encode
Alat Enkripsi Online MD5:
http://tools.vevb.com/password/createMd5password
Alat Enkripsi Algoritma Hash/Hash Online:
http://tools.vevb.com/password/hash_encrypt
Online MD5/Hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160 Alat Enkripsi:
http://tools.vevb.com/password/hash_md5_sha
Online SHA1/SHA224/SHA256/SHA384/SHA512 Alat Enkripsi:
http://tools.vevb.com/password/sha_encode
For more information about Java related content, please check out the topics of this site: "Summary of Java Mathematical Operation Skills", "Tutorial on Java Data Structures and Algorithms", "Summary of Java Characters and String Operation Skills", "Summary of Java Operation DOM Node Skills" and "Summary of Java Cache Operation Skills"
Saya harap artikel ini akan membantu pemrograman Java semua orang.