Artikel ini menjelaskan fungsi enkripsi dan dekripsi yang diimplementasikan oleh Java berdasarkan algoritma enkripsi simetris AES. Bagikan untuk referensi Anda, sebagai berikut:
Paket com.soufun.com; impor java.io.unsupportedencodingException; impor java.security.invalidKeyException; impor java.security.nosuchalgorithmException; impor java.security.securerandom; impor java.util.date; javax.crypto.cipher; import javax.crypto.illegalblocksizeException; import javax.crypto.keygenerator; import javax.crypto.nosuchpaddingException; import javax.crypto.secretkey; impor javax.crypto.pryprecretypet; */kelas publik AeSutil {Private Static Final String AES = "AES"; string final statis privat UTF8 = "UTF-8"; Keygenerator statis kgen = null; static {coba {kgen = keygenerator.getInstance (AES); } catch (nosuchalgorithMexception e) {// todo auto-generated catch block e.printstacktrace (); }}/ * * @param konten: * @param Kata sandi: */byte statis pribadi [] encrypt (konten string, kata sandi string) {coba {// gunakan blok kode statis untuk menghasilkan objek keygenerator // keygenerator kgen = keygenerator.getInstance (AES); // Gunakan 128-bit kgen.init (128, SecureRandom baru (kata sandi.getbytes ())); Secretkey Secretkey = kgen.generateKey (); byte [] encodeformat = Secretkey.getEncoded (); SecretKeySpec Key = SecretEyspec baru (EncodeFormat, AES); // Objek Cipher sebenarnya melengkapi operasi enkripsi cipher cipher = cipher.getInstance (AES); // mengenkripsi konten untuk pengkodean byte [] bytecontent = content.getbytes (utf8); // inisialisasi cipher objek cipher.init (cipher.encrypt_mode, key); // jalankan 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; }/ * * @param konten: * @param Kata sandi: */private static byte [] decrypt (byte [] konten, kata sandi string) {coba {// gunakan blok kode statis untuk menghasilkan objek keygenerator // keygenerator kgen = keygenerator.getInstance (AES); // Gunakan 128-bit kgen.init (128, SecureRandom baru (kata sandi.getbytes ())); Secretkey Secretkey = kgen.generateKey (); byte [] encodeformat = Secretkey.getEncoded (); SecretKeySpec Key = SecretEyspec baru (EncodeFormat, AES); // Objek Cipher sebenarnya melengkapi operasi enkripsi cipher cipher = cipher.getInstance (AES); // inisialisasi objek cipher dengan cipher.init kunci (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; } / ** * biner-》 konversi hex * @param buf * @return * / private static string parsebyte2Hexstr (byte buf []) {stringBuffer sb = stringBuffer baru (); untuk (int i = 0; i <buf.length; i ++) {string hex = integer.toHexString (buf [i] & 0xff); if (hex.length () == 1) {hex = '0' + hex; } SB.Append (hex.touppercase ()); } return sb.toString (); } / ** * hex-》 konversi biner * @param hexstr * @return * / private static byte [] parsehexstr2byte (string hexstr) {if (hexstr.length () <1) {return null; } byte [] hasil = byte baru [hexstr.length () / 2]; untuk (int i = 0; i <hexstr.length () / 2; i ++) {int high = integer.parseint (hexstr.substring (i * 2, i * 2+1), 16); int low = integer.parseint (hexstr.substring (i * 2 + 1, i * 2 + 2), 16); Hasil [i] = (byte) (tinggi * 16 + rendah); } hasil pengembalian; } public static void main (string [] args) melempar UnsportedEncodingException {long begin = new date (). getTime (); String Content = "Tes Enkripsi AAADS"; String password = "12345678dd"; // enkripsi system.out.println ("Sebelum enkripsi:" + konten); byte [] encryptresult = enkripsi (konten, kata sandi); String encryptresultStr = parsebyte2Hexstr (encryptresult); System.out.println ("After Encrypt:" + EncryptresultStr); // decrypt byte [] decryptFrom = parsehexstr2byte (encryptresultStr); byte [] decryptresult = decrypt (decrypt dari, kata sandi); // Dekripsi konten untuk decoding string hasil = string baru (decryptresult, utf8); System.out.println ("Setelah mendekripsi:" + hasil); Long End = Tanggal baru (). GetTime (); System.out.println (end-begin); }}Catatan: Securerandom menghasilkan urutan nomor acak yang aman, kata sandi.getbytes () adalah benih. Selama benihnya sama, urutannya sama. Oleh karena itu, selama ada kata sandi, dekripsi dapat dilakukan, dan urutan ini dapat dipulihkan.
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.