Kode enkripsi dan dekripsi simetris AES diperkenalkan secara rinci untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Paket demo.security; impor java.io.ioexception; impor java.io.unsupportedencodingException; impor java.security.invalidKeyException; impor java.security.nosuchalgorithMexception; impor java.security.securerdom; java.util.scanner; impor javax.crypto.badpaddingexception; impor javax.crypto.cipher; impor javax.crypto.illegalblocksizeException; impor javax.cryptionerator; impor javax.crypto.nosuchponcepto ;keyceptionerator; impor javax.crypto.nosuchpadpinging; conceptioneror; javax.crypto.spec.secretkeyspec; impor sun.misc.base64decoder; impor sun.misc.base64encoder;/* aes enkripsi simetris dan dekripsi*/pembangkasan public. * 4. Buat dan inisialisasi kata sandi * 5. Enkripsi Konten * 6. Kembalikan string */string statis public aesEncode (string encoderules, string content) {coba {// 1. Bangun generator kunci, ditentukan sebagai algoritma AES, dan merupakan keygenerator case-sensitif keygen = keygenerator.getInstance ("AES"); // 2. Menginisialisasi generator kunci sesuai dengan aturan ecnoderules // menghasilkan sumber acak 128-bit, dan sesuai dengan array byte yang dilewatkan. // 3. Hasilkan kunci simetris asli Secretkey original_key = keygen.generateKey (); // 4. Dapatkan array byte dari byte kunci simetris asli [] raw = original_key.getEncoded (); // 5. Hasilkan kunci AES dari array byte Secretkey Key = SecretKeyspec baru (mentah, "AES"); // 6. Menurut algoritma yang ditentukan AES cipher cipher yang dihasilkan sendiri cipher = cipher.getInstance ("aes"); // 7. Inisialisasi cryptor, parameter pertama adalah operasi enkripsi (encrypt_mode) atau dekripsi dan dekripsi (decrypt_mode), dan parameter kedua adalah kunci yang digunakan cipher.init (cipher.encrypt_mode, kunci); // 8. Dapatkan array byte konten terenkripsi (perlu diatur ke UTF-8 di sini). Kalau tidak, jika ada bahasa Cina dan bahasa Inggris dalam konten, itu akan didekripsi menjadi byte kode yang kacau [] byte_encode = content.getbytes ("UTF-8"); // 9. Menurut metode inisialisasi cipher-enkripsi: mengenkripsi byte data [] byte_aes = cipher.dofinal (byte_encode); // 10. Konversi data terenkripsi menjadi string // Paket tidak akan ditemukan di base64Encoder di sini // Solusi: // Hapus First Hapus Library Sistem JRE di jalur pembuatan proyek, dan kemudian menambahkan perpustakaan Sistem Perpustakaan JRE, semuanya berjalan dengan baik setelah kompilasi ulang. String aes_encode = string baru (base64encoder baru (). Encode (byte_aes)); // 11. Mengembalikan string untuk mengembalikan AES_ENCODE; } 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 (); } catch (UnsupportedEncodingException e) {e.printstacktrace (); } // Jika ada kesalahan, tambahkan NULL Return null; } /** Dekripsi* Proses Dekripsi:* 1. Langkah-langkah Enkripsi yang sama 1-4* 2. Inverse memutar string terenkripsi ke dalam array byte []* 3. Mendekripsi konten terenkripsi* /string statis public aesdncode (string encoderules, konten string) {coba {// 1. Bangun generator kunci, tentukan sebagai algoritma AES, dan bukan keygenerator sensitif case keygen = keygenerator.getInstance ("AES"); // 2. Menginisialisasi generator kunci sesuai dengan aturan ecnoderules // menghasilkan sumber acak 128-bit, dan sesuai dengan array byte yang dilewatkan. // 3. Hasilkan kunci simetris asli Secretkey original_key = keygen.generateKey (); // 4. Dapatkan array byte dari byte kunci simetris asli [] raw = original_key.getEncoded (); // 5. Hasilkan kunci AES berdasarkan array byte Secretkey Key = new Secreteyspec (RAW, "AES"); // 6. Menurut algoritma yang ditentukan Cipher pembentuk mandiri AES, cipher cipher = cipher.getInstance ("aes"); // 7. Inisialisasi cipher, parameter pertama adalah operasi enkripsi (encrypt_mode) atau decrypt (decrypt_mode), dan parameter kedua adalah kunci cipher.init (cipher.decrypt_mode, key); // 8. Dekode konten yang dienkripsi dan dikodekan ke byte array byte [] byte_content = base64decoder baru (). DecodeBuffer (konten); /** Dekripsi*/ byte [] byte_decode = cipher.dofinal (byte_content); String aes_decode = string baru (byte_decode, "UTF-8"); return aes_decode; } catch (nosuchalgorithMexception e) {e.printstacktrace (); } catch (nosuchpaddingException e) {e.printstacktrace (); } catch (InvalidKeyException e) {E.PrintStackTrace (); } catch (ioException e) {e.printstacktrace (); } catch (ilegalblocksizeException e) {e.printstacktrace (); } catch (badpaddingException e) {e.printstacktrace (); } // Jika ada kesalahan, tambahkan NULL Return null; } public static void main (string [] args) {symmetricencoder se = new Symmetricencoder (); Pemindai Pemindai = Pemindai Baru (System.in); /** Enkripsi*/ system.out.println ("Gunakan enkripsi simetris AES, silakan masukkan aturan enkripsi"); String encoderules = scanner.next (); System.out.println ("Harap masukkan konten yang akan dienkripsi:"); String content = scanner.next (); System.out.println ("Menurut aturan input"+Encoderules+"Ciphertext terenkripsi adalah:"+se.aesencode (enkoderul, konten)); /** Decrypt*/ System.out.println ("Gunakan dekripsi simetris AES, silakan masukkan aturan enkripsi: (harus sama dengan enkripsi)"); Encoderules = scanner.next (); System.out.println ("Harap masukkan konten yang akan didekripsi (ciphertext):"); konten = scanner.next (); System.out.println ("Menurut aturan input"+encoderules+"Teks biasa yang didekripsi adalah:"+se.aesdncode (enkoderul, konten)); }} Hasil tes:
Gunakan enkripsi simetris AES, silakan masukkan aturan enkripsi. Gunakan enkripsi simetris AES. Harap masukkan konten yang ingin Anda enkripsi:
Gunakan enkripsi simetris AES untuk mengenkripsi ciphertext menggunakan enkripsi simetris AES sesuai dengan aturan input adalah: z0nwrnphghgxhn0cqjls58ycjhmcbfer33rws7lw+ay =
Gunakan dekripsi simetris AES, silakan masukkan aturan enkripsi: (harus sama dengan enkripsi)
Gunakan enkripsi simetris AES untuk memasukkan konten (ciphertext):
Z0nwrnphghgxhn0cqjls58ycjhmcbfer3rws7lw+ay =
Plaintext didekripsi menggunakan enkripsi simetris AES sesuai dengan aturan input adalah: Gunakan enkripsi simetris AES
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.