Cara menggunakan java untuk melaksanakan algoritma penyulitan AES
Pengenalan:
Dalam proses aplikasi rangkaian dan penghantaran data, keselamatan data adalah penting. Algoritma penyulitan adalah salah satu cara penting untuk melindungi keselamatan data. AES (Advanced Encryption Standard) ialah salah satu daripada algoritma penyulitan simetri yang paling biasa digunakan pada masa ini, dengan keselamatan yang tinggi, kecekapan dan fleksibiliti. Artikel ini akan memperkenalkan cara menggunakan bahasa pengaturcaraan Java untuk melaksanakan algoritma penyulitan AES untuk melindungi keselamatan data.
Sebelum menggunakan penyulitan AES ke ion algoritma, kami memerlukan Import fail perpustakaan berkaitan. Di Java, algoritma penyulitan AES boleh dilaksanakan menggunakan perpustakaan javax.crypto. Kami perlu mengimport fail perpustakaan berikut:
import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.SecretKeySpec;
public class AESUtil { private static final String CIPHER_ALGORITHM = "AES/CBC/PKCS5Padding"; private static final String SECRET_KEY_ALGORITHM = "PBKDF2WithHmacSHA256"; private static final int ITERATION_COUNT = 65536; private static final int KEY_LENGTH = 128; private static final int IV_LENGTH = 16; public static byte[] encrypt(String plaintext, String password) throws Exception { byte[] salt = generateSalt(); PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray(), salt, ITERATION_COUNT, KEY_LENGTH); SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance(SECRET_KEY_ALGORITHM); SecretKey secretKey = secretKeyFactory.generateSecret(pbeKeySpec); byte[] iv = generateIV(); Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(iv)); byte[] ciphertext = cipher.doFinal(plaintext.getBytes("UTF-8")); byte[] encrypted = new byte[iv.length + salt.length + ciphertext.length]; System.arraycopy(iv, 0, encrypted, 0, iv.length); System.arraycopy(salt, 0, encrypted, iv.length, salt.length); System.arraycopy(ciphertext, 0, encrypted, iv.length + salt.length, ciphertext.length); return encrypted; } public static String decrypt(byte[] encrypted, String password) throws Exception { byte[] iv = new byte[IV_LENGTH]; System.arraycopy(encrypted, 0, iv, 0, iv.length); byte[] salt = new byte[encrypted.length - iv.length - KEY_LENGTH / 8]; System.arraycopy(encrypted, iv.length, salt, 0, salt.length); byte[] ciphertext = new byte[encrypted.length - iv.length - salt.length]; System.arraycopy(encrypted, iv.length + salt.length, ciphertext, 0, ciphertext.length); PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray(), salt, ITERATION_COUNT, KEY_LENGTH); SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance(SECRET_KEY_ALGORITHM); SecretKey secretKey = secretKeyFactory.generateSecret(pbeKeySpec); Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(iv)); byte[] plaintext = cipher.doFinal(ciphertext); return new String(plaintext, "UTF-8"); } private static byte[] generateSalt() { byte[] salt = new byte[KEY_LENGTH / 8]; SecureRandom secureRandom = new SecureRandom(); secureRandom.nextBytes(salt); return salt; } private static byte[] generateIV() { byte[] iv = new byte[IV_LENGTH]; SecureRandom secureRandom = new SecureRandom(); secureRandom.nextBytes(iv); return iv; } }
public class Main { public static void main(String[] args) { try { String plaintext = "Hello, World!"; String password = "MySecretPassword"; byte[] encrypted = AESUtil.encrypt(plaintext, password); System.out.println("Encrypted data: " + Arrays.toString(encrypted)); String decrypted = AESUtil.decrypt(encrypted, password); System.out.println("Decrypted data: " + decrypted); } catch (Exception e) { e.printStackTrace(); } } }
Kesimpulan
Artikel ini memperkenalkan cara menggunakan bahasa pengaturcaraan Java untuk melaksanakan algoritma penyulitan AES untuk melindungi keselamatan data. Dengan kod sampel di atas, kami boleh menyulitkan data sensitif dan menyahsulitnya apabila diperlukan. Dengan mempelajari dan memahami pengetahuan ini, kami dapat melindungi keselamatan data dengan lebih baik dan menerapkannya pada senario yang sepadan dalam pembangunan sebenar.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan algoritma penyulitan AES menggunakan java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!