Java を使用して AES 暗号化アルゴリズムを実装する方法
はじめに:
ネットワーク アプリケーションとデータ送信のプロセスでは、データ セキュリティが非常に重要です。暗号化アルゴリズムは、データのセキュリティを保護する重要な手段の 1 つです。 AES (Advanced Encryption Standard) は、現在最も一般的に使用されている対称暗号化アルゴリズムの 1 つであり、高いセキュリティ、効率性、柔軟性を備えています。この記事では、Java プログラミング言語を使用して AES 暗号化アルゴリズムを実装し、データのセキュリティを保護する方法を紹介します。
関連ライブラリのインポート
Java を使用して AES 暗号化アルゴリズムを実装する前に、関連するライブラリ ファイルをインポートする必要があります。 Java では、javax.crypto ライブラリを使用して AES 暗号化アルゴリズムを実装できます。次のライブラリ ファイルをインポートする必要があります:
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;
AES 暗号化および復号化メソッドの実装
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; } }
使用例
これで、使用できるようになります。上記の実装では、データの暗号化と復号化に AES 暗号化アルゴリズムが使用されます。
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(); } } }
以上がJavaを使用してAES暗号化アルゴリズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。