Contoh ini menjelaskan penggunaan pengkodean dan decoding hex untuk mengimplementasikan enkripsi dan dekripsi AES. Bagikan untuk referensi Anda, sebagai berikut:
Di sini, metode enkripsi dan dekripsi AES dikodekan dan didekodekan menggunakan hex.
Paket com.baidu.wallet.bdwallet.utils; impor java.io.unsupportedencodingException; impor java.security.invalidKeyException; impor java.security.nosuchalgorityception; impor javax.crypto.badpaddingerkepsi; javax.crypto.illegalblocksizeException; impor javax.crypto.nosuchpaddingException; import javax.crypto.spec.secretkeyspec; impor org.apache.commons.codec.decoderexception; impor org.apache.commons.codec.hexcepte; AES = "AES"; string final statis privat UTF8 = "UTF-8"; / ** * enkripsi AES * @param konten * @param pkey * @return * @throws decoderexception */ private static byte [] encrypt (string content, string pkey) melempar DecoderException {coba {string private_key = pkey; byte [] encodeformat = null; Coba {// Mengapa kunci rahasia perlu diterjemahkan? Karena kunci rahasia adalah nilai kunci rahasia yang dikodekan oleh hex, itu harus diterjemahkan saat digunakan encodeformat = hex.decodehex (private_key.tochararray ()); } catch (decoderexception e) {e.printstacktrace (); } SecretKeySpec Key = SecretKeyspec baru (EncodeFormat, AES); // Objek Cipher sebenarnya melengkapi operasi enkripsi cipher cipher = cipher.getInstance ("AES/ECB/PKCS5PADDING"); // mengenkripsi konten untuk pengkodean byte [] bytecontent = content.getbytes (utf8); // inisialisasi cipher objek cipher.init (cipher.encrypt_mode, key); // eksekusi formal byte operasi enkripsi [] hasil = cipher.dofinal (bytecontent); hasil pengembalian; } catch (nosuchalgorithMexception e) {e.printstacktrace (); } catch (nosuchpaddingException e) {e.printstacktrace (); } catch (InvalidKeyException e) {E.PrintStackTrace (); } catch (UnsupportedEncodingException e) {e.printstacktrace (); } catch (ilegalblocksizeException e) {e.printstacktrace (); } catch (badpaddingException e) {e.printstacktrace (); } return null; } /** * Dekripsi AES * @param konten * @param Kata sandi * @return * @throws DecoderException * /private static byte [] decrypt (konten string, kata sandi string) melempar decoderexception {try {// hex untuk decode ciphertext byte [] content = hex. // Mengapa kunci rahasia perlu diterjemahkan? Karena kunci rahasia adalah nilai kunci rahasia yang dikodekan oleh hex, itu harus diterjemahkan saat digunakan byte [] encodeformat = hex.decodehex (kata sandi.tochararray ()); SecretKeySpec Key = SecretEyspec baru (EncodeFormat, AES); // Objek Cipher sebenarnya melengkapi operasi enkripsi cipher cipher = cipher.getInstance (AES); // inisialisasi cipher objek cipher.init (cipher.decrypt_mode, key); // eksekusi formal byte operasi dekripsi [] hasil = cipher.dofinal (konten); hasil pengembalian; } catch (nosuchalgorithMexception e) {e.printstacktrace (); } catch (nosuchpaddingException e) {e.printstacktrace (); } catch (InvalidKeyException e) {E.PrintStackTrace (); } catch (ilegalblocksizeException e) {e.printstacktrace (); } catch (badpaddingException e) {e.printstacktrace (); } return null; } /** * Aes encryption* @param context plaintext* @param private_key secret key* @return * @throws DecoderException */ public static String encryption(String context,String private_key) throws DecoderException{ //The encrypted plaintext becomes the ciphertext byte[] encryptResult = encrypt(context, private_key); // Teks Kata Sandi Hex mengkode string encryptresultstr = hex.encodeHexString (encryptresult); return encryptresultstr; } /*** AES DECRYPT* @param konteks ciphertext* @param private_key Key rahasia* @return* @throws decoderexception* @throws UnsupportedencodingException* /Dekripsi Statis Public ComprySception, String Private_Key) Decoderexception, Unsupportedencoding -Conseption {decodering {decoderexception, unsupportedencoding {string privyking) decoderexception, unsupportedencoding {string Private) di sini byte [] decryptresult = decrypt (konteks, private_key); String hasil = string baru (decryptresult, utf8); hasil pengembalian; } public static void main (string [] args) melempar UnsportedEncodingException, DecoderException {// konten konten yang dienkripsi = "123456787654321"; // AES Enkripsi dan Kunci Kunci Dekripsi Kata sandi = "Nilai ini umumnya diberikan, kedua pengirim tahu"; // enkripsi system.out.println ("Sebelum enkripsi:" + konten); // Panggil metode enkripsi string encryptresultstr = enkripsi (konten, kata sandi); System.out.println ("Setelah enkripsi:" + encryptresultstr); // Panggil metode string metode dekripsi = dekripsi (encryptresultstr, kata sandi); // mendekripsi konten untuk decoding system.out.println ("setelah dekripsi:" + hasil); }}Tidak ada masalah dengan metode ini dalam proyek formal. Harap dicatat bahwa Anda perlu memperbaiki enkripsi dan dekripsi AES di sini ...
Metode di atas digunakan dalam org.apache.commons.codec.binary.hex. Konfigurasi di Maven adalah sebagai berikut:
<dependency> <GroupId> commons-codec </groupid> <ArTifactId> commons-codec </artifactid> <version> 1.4 </version> </gandendency>
Catatan: Anda harus menggunakan versi 1.4 dan di atas di sini, dan tidak boleh ada metode hex.encodehexstring (byte []) di bawah 1.4!
PS: Teman yang tertarik dengan enkripsi dan dekripsi juga dapat merujuk pada alat online dari situs ini:
Deteksi Online Keamanan Kata Sandi:
http://tools.vevb.com/password/my_password_safe
Generator Kata Sandi Kekuatan Tinggi:
http://tools.vevb.com/password/createStrongPassword
Alat enkripsi/dekripsi URL Tornado, dan Tornado:
http://tools.vevb.com/password/urlrethunder
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
Saya harap artikel ini akan membantu pemrograman Java semua orang.