Heim >Java >javaLernprogramm >So implementieren Sie den AES-Verschlüsselungsalgorithmus mit Java
So implementieren Sie den AES-Verschlüsselungsalgorithmus mit Java
Einführung:
Bei Netzwerkanwendungen und Datenübertragung ist die Datensicherheit von entscheidender Bedeutung. Verschlüsselungsalgorithmen sind eines der wichtigen Mittel zum Schutz der Datensicherheit. AES (Advanced Encryption Standard) ist derzeit einer der am häufigsten verwendeten symmetrischen Verschlüsselungsalgorithmen mit hoher Sicherheit, Effizienz und Flexibilität. In diesem Artikel wird erläutert, wie Sie mithilfe der Programmiersprache Java den AES-Verschlüsselungsalgorithmus zum Schutz der Datensicherheit implementieren.
Importieren Verwandte Bibliotheken
Bevor wir Java zur Implementierung des AES-Verschlüsselungsalgorithmus verwenden, müssen wir die relevanten Bibliotheksdateien importieren. In Java kann der AES-Verschlüsselungsalgorithmus mithilfe der Bibliothek javax.crypto implementiert werden. Wir müssen die folgenden Bibliotheksdateien importieren:
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;
Implementierung der AES-Verschlüsselungs- und Entschlüsselungsmethode
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; } }
Anwendungsbeispiel
Jetzt können wir den oben implementierten AES-Verschlüsselungsalgorithmus zum Ver- und Entschlüsseln von Daten verwenden.
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(); } } }
Das obige ist der detaillierte Inhalt vonSo implementieren Sie den AES-Verschlüsselungsalgorithmus mit Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!