AES対称暗号化と復号化コードは、参照用に詳細に導入されています。特定のコンテンツは次のとおりです
パッケージdemo.security; import java.io.ioexception; import java.io.unsupportedencodingception; import java.security.invalidkeyexception; Import java.security.nosuchalgorithmexception; Import java.security.securerandom; Import java.util.util.baserand4; javax.crypto.badpaddingexception; import javax.crypto.cipher; Import javax.crypto.illegalblocksizeexecticete; import javax.crypto.keygenerator; Import javax.crypto.nosuchpaddingexception; Import.crypto.crypto.secretkey; javax.crypto.spec.secretkeyspec; import sun.misc.base64decoder; import sun.misc.base64encoder;/** aes対称暗号化と復号化*/パブリッククラス対称対称対称{/** encryption* 1。 4。パスワードを作成して初期化 *5。ContentEncryption *6。String */public Static String aesencode(string encoderules、string content){try {// 1。 AESアルゴリズムとして指定されたキージェネレーターを構築し、ケース非感受性keygenerator keygen = keygenerator.getInstance( "aes");です。 // 2。 ecnoderulesルールに従ってキージェネレーターを初期化// 128ビットランダムソースを生成し、渡されたバイトアレイkeygen.init(128、new securerandom(encoderules.getBytes()))に従って生成します。 // 3。元の対称キーシークレットキーOriginal_key = keygen.genertykey()を生成します。 // 4。元の対称キーバイト[] raw = original_key.getEncoded()のバイト配列を取得します。 // 5。 BYTEアレイSecretKey Key = new SecretKeysPec(raw、 "AES")からAESキーを生成します。 // 6。指定されたアルゴリズムによると、AES自己生成阻止暗号Cipher = cipher.getInstance( "aes"); // 7。暗号化の初期化、最初のパラメーターは暗号化(encrypt_mode)または復号化と復号化(decrypt_mode)操作です。2番目のパラメーターは、cipher.init(cipher.encrypt_mode、key)を使用するキーです。 // 8。暗号化されたコンテンツのバイト配列を取得します(ここでUTF-8に設定する必要があります)。それ以外の場合、コンテンツに中国語と英語が混在している場合、文字化けのコードBYTE [] BYTE_ENCODE = CONTENT.GETBYTES( "UTF-8")に復号化されます。 // 9。 cipherの初期化方法に従って、cipher-cryption:data byte [] byte_aes = cipher.dofinal(byte_encode)を暗号化します。 // 10。暗号化されたデータを文字列に変換します//パッケージはbase64encoderにありませんstring aes_encode = new String(new base64Encoder()。encode(byte_aes)); // 11。文字列を返してAES_ENCODEを返します。 } catch(nosuchalgorithmexception e){e.printstacktrace(); } catch(nosuchpaddingexception e){e.printstacktrace(); } catch(InvalidKeyException e){e.printstacktrace(); } catch(Illegalblocksizeexcection e){e.printstacktrace(); } catch(badPaddingException e){e.printstacktrace(); } catch(unsupportedencodingexception e){e.printstacktrace(); } //エラーがある場合は、null return nullを追加します。 } /** Decrypt* Decryptionプロセス:*1。同じ暗号化ステップ1-4*2。暗号化された文字列をバイト[]配列に挿入しました* 3。キージェネレーターを構築し、AESアルゴリズムとして指定しますが、ケースに敏感ではありませんkeygenerator keygen = keygenerator.getInstance( "aes"); // 2。 ecnoderulesルールに従ってキージェネレーターを初期化// 128ビットランダムソースを生成し、渡されたバイトアレイkeygen.init(128、new securerandom(encoderules.getBytes()))に従って生成します。 // 3。元の対称キーシークレットキーOriginal_key = keygen.genertykey()を生成します。 // 4。元の対称キーバイト[] raw = original_key.getEncoded()のバイト配列を取得します。 // 5。バイトアレイSecretKey Key = new SecretKeysPec(raw、 "AES")に基づいてAESキーを生成します。 // 6。指定されたアルゴリズムAESセルフフォーミング暗号によると、cipher cipher = cipher.getInstance( "aes"); // 7。暗号化の初期化、最初のパラメーターは暗号化(encrypt_mode)またはdecrypt(decrypt_mode)操作です。2番目のパラメーターはキーcipher.init(cipher.decrypt_mode、key)です。 // 8。暗号化されたコンテンツとエンコードされたコンテンツをバイト配列バイトにデコードします[] byte_content = new Base64Decoder()。decodeBuffer(content); /** decrypt*/ byte [] byte_decode = cipher.dofinal(byte_content); string aes_decode = new String(byte_decode、 "utf-8"); aes_decodeを返します。 } catch(nosuchalgorithmexception e){e.printstacktrace(); } catch(nosuchpaddingexception e){e.printstacktrace(); } catch(InvalidKeyException e){e.printstacktrace(); } catch(ioexception e){e.printstacktrace(); } catch(Illegalblocksizeexcection e){e.printstacktrace(); } catch(badPaddingException e){e.printstacktrace(); } //エラーがある場合は、null return nullを追加します。 } public static void main(string [] args){symmetricencoder se = new symmetricencoder();スキャナースキャナー=新しいスキャナー(System.in); /** encryption*/ system.out.println( "AES対称暗号化を使用して、暗号化ルールを入力してください"); string encoderules = scanner.next(); System.out.println( "暗号化されるコンテンツを入力してください:");文字列content = scanner.next(); system.out.println( "入力ルールに従って"+encoderules+"暗号化された暗号文は次のとおりです。 /** decrypt*/ system.out.println( "AES対称復号化を使用して、暗号化ルールを入力してください:(暗号化と同じでなければなりません)"); encoderules = scanner.next(); system.out.println( "decrypted(ciphertext):"); content = scanner.next(); system.out.println( "入力ルールに従って"+encoderules+"decrypted is:"+se.aesdncode(encoderules、content)); }}テスト結果:
AES対称暗号化を使用して、暗号化ルールを入力してください。 AES対称暗号化を使用します。暗号化するコンテンツを入力してください:
AES対称暗号化を使用して、入力ルールに従ってAES対称暗号化を使用して暗号文を暗号化します:z0nwrnphghggxhn0cqjls58ycjhmcbfer33rws7lw+ay = ay =
AES対称復号化を使用して、暗号化ルールを入力してください:(暗号化と同じでなければなりません)
AES対称暗号化を使用してコンテンツを入力します(ciphertext):
z0nwrnphghgxhn0cqjls58ycjhmcbfer33rws7lw+ay =
入力ルールに従ってAES対称暗号化を使用して復号化されたプレーンテキストは次のとおりです。AES対称暗号化を使用します
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。