この記事では、Javaに実装されたRSA暗号化と復号化アルゴリズムについて説明します。次のように、参照のために共有してください。
java.awt.alphacomposite; import java.awt.color; import java.awt.font; import java.awt.graphics2d; import java.awt.image; import java.awt.renderings; import java.awt.image.imadimage; Import java.io.io.file java.io.fileinputStream; Import java.io.fileoutputStream; Import java.objectinputStream; Import java.io.objectutputStream; Import java.security.key; Import java.security.keypair; Import java.security.keypurity.keypuriturerand; Import java; java.security.interfaces.rsaprivatekey; Import java.security.interfaces.rsapublickey; Import javax.crypto.cipher; public static string makekeyfile(string pubkeyfile、string prikeyfile){string restring = "public and pirate key file file file file filead"; try {// keypairgeneratorは、パブリックキーペアと秘密キーペアを生成するために使用され、RSAアルゴリズムに基づいてオブジェクトが生成されます。 keypairgenerator gen = keypairgenerator.getInstance( "rsa"); //キーペアジェネレーターの初期化、キーサイズは1024ビットGen.Initialize(1024)です。 // //強い乱数を生成する// securerandom random = new securerandom(); // gen.Initialize(1024、random); //キーペアを生成し、ペアに保存しますkeypairペア= gen.genereTkeypair(); //秘密キーを取得しますrsaprivatekey prikey =(rsaprivatekey)pair.getPrivate(); //公開キーを取得rsapublickey pubkey =(rsapublickey)pair.getpublic(); //秘密キーファイルObjectOutputStream os = new objectOutputStream(new FileOutputStream(PrikeyFile)); OS.WriteObject(Prikey); os.flush(); os.close(); //公開キーファイルを生成os = new objectOutputStream(new FileOutputStream(pubKeyFile)); os.writeobject(pubkey); os.flush(); os.close(); result = "publicキーファイルを生成["+pubkeyfile+"]秘密キーファイル["+prikeyfile+"]"; } catch(Exception e){e.printstacktrace(); } return result; } public static void main(string [] args){try {string pubfile = "f:/images/pub.key";文字列ライセンス= "f:/images/pri.key";文字列結果= null; // result = makekeyfile(pubfile、license); result = markpupra(pubfile、ライセンス); system.out.println(result); } catch(Exception e){e.printstacktrace(); }} public static string markpupra(string pubfile、string license){string results = "暗号化エラーが発生しました"; try {objectInputStream os = new objectInputStream(new FileInputStream(pubfile)); rsapublickey pubkey =(rsapublickey)os.readobject(); os.close(); OS = new ObjectInputStream(new FileInputStream(Prifile)); rsaprivatekey prikey =(rsaprivatekey)os.readobject(); os.close();文字列utf = "utf-8";文字列msg = "## china%of of%people @+_"; //公開キーを使用して秘密鍵を暗号化してsystem.out.println( "Original Text:" + msg); byte [] puk = handledata(pubkey、msg.getbytes(utf)、1); System.out.println( "暗号化されたファイルデータ:" + new String(puk、utf)); byte [] dpuk = handledata(prikey、puk、0); System.out.println( "復号化されたファイルデータ:" + new String(dpuk、utf)); msg = "jd#our ¥+=#new"; //秘密鍵を使用して公開キーを暗号化してsystem.out.println( "Original Text:" + msg); byte [] prk = handledata(prikey、msg.getbytes(utf)、1); System.out.println( "暗号化されたファイルデータ:" + new String(prk、utf)); byte [] dprk = handledata(pubkey、prk、0); System.out.println( "復号化されたファイルデータ:" + new String(dprk、utf));結果= "暗号化と復号化が完了しました"; } catch(Exception e){e.printstacktrace(); } return results; } / ** * * @param k * @param data * @param encrypt 1暗号化0 decryption * @return * @throws例外 * / public static byte [] hondledata(key key、byte [] data、intタイプ)スロー{(key!= null){cipher ci = cipher.getinstance(rsa "); if(type == 1){ci.init(cipher.encrypt_mode、key); byte [] res = ci.dofinal(data); RESを返します。 } if(type == 0){ci.init(cipher.decrypt_mode、key); byte [] res = ci.dofinal(data); RESを返します。 }} nullを返します。 }}PS:暗号化と復号化に興味がある友人は、このサイトのオンラインツールを参照することもできます。
テキストオンライン暗号化と復号化ツール(AE、DES、RC4などを含む):
http://tools.vevb.com/password/txt_encode
MD5オンライン暗号化ツール:
http://tools.vevb.com/password/createmd5password
オンラインハッシュ/ハッシュアルゴリズム暗号化ツール:
http://tools.vevb.com/password/hash_encrypt
オンラインMD5/ハッシュ/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 Operation Dom Node Skillsの要約」、および「Java Cache操作スキルの概要」
この記事がみんなのJavaプログラミングに役立つことを願っています。