HOWTO · Java
자바의 AES 256
이 튜토리얼은 Java에서 AES 256을 구현하는 방법을 보여줍니다.
이 페이지의 내용
AES 256은 암호화 및 암호 해독 알고리즘입니다. 이 자습서는 Java에서 AES 256을 구현하여 데이터를 암호화하고 해독하는 방법을 보여줍니다.
자바의 AES 256
AES는 소프트웨어, 하드웨어 및 제한된 환경에서 구현하기 쉬운 대칭 암호화 알고리즘입니다. 또한 다양한 공격에 대한 우수한 방어력을 제공합니다.
AES는 128, 192 및 256비트 크기의 키를 사용하여 블록 암호의 형태로 128비트 블록을 처리할 수 있습니다. 각 암호는 128비트 블록의 데이터를 해독하거나 암호화합니다.
AES는 수신자와 발신자가 모두 동일한 비밀 키를 사용하고 알고 있어야 하는 동일한 암호화 및 암호 해독 프로세스를 사용합니다. 이 자습서에서는 AES 256을 사용하여 데이터를 암호화하고 해독하는 방법을 보여줍니다.
AES 256을 사용하여 Java에서 데이터 암호화
아래 Java 코드는 AES 256 암호화를 구현합니다.
package delftstack;
import java.nio.charset.StandardCharsets;
import java.security.spec.KeySpec;
import java.util.Base64;
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 AES_Encrypt {
private static final String SECRET_KEY = "Delftstack";
private static final String SALT = "Tutorial";
public static String encrypt_AES(String StringToEncrypt) {
try {
byte[] a = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
IvParameterSpec Iv_Specifications = new IvParameterSpec(a);
SecretKeyFactory Secret_Key_Factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
KeySpec Key_Spec = new PBEKeySpec(SECRET_KEY.toCharArray(), SALT.getBytes(), 65536, 256);
SecretKey Temp_Secret_Key = Secret_Key_Factory.generateSecret(Key_Spec);
SecretKeySpec Secret_Key = new SecretKeySpec(Temp_Secret_Key.getEncoded(), "AES");
Cipher AES_Cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
AES_Cipher.init(Cipher.ENCRYPT_MODE, Secret_Key, Iv_Specifications);
return Base64.getEncoder().encodeToString(
AES_Cipher.doFinal(StringToEncrypt.getBytes(StandardCharsets.UTF_8)));
} catch (Exception e) {
System.out.println("Error while encrypting: " + e.toString());
}
return null;
}
public static void main(String[] args) {
String Original_String = "www.delftstack.com";
String Encrypted_String = AES_Encrypt.encrypt_AES(Original_String);
System.out.println(Original_String);
System.out.println(Encrypted_String);
}
}
위 코드의 출력은 다음과 같습니다.
www.delftstack.com
fV2B4Is2xva8C+SieUg01vRbGmZNbyTzV9+llBdv7kM=
AES 256을 사용하여 Java에서 데이터 암호 해독
아래 코드는 Java에서 AES 256 암호 해독을 보여줍니다.
package delftstack;
import java.nio.charset.StandardCharsets;
import java.security.spec.KeySpec;
import java.util.Base64;
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 AES_Decrypt {
private static final String SECRET_KEY = "Delftstack";
private static final String SALT = "Tutorial";
public static String decrypt_AES(String strToDecrypt) {
try {
byte[] a = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
IvParameterSpec IV_Specifications = new IvParameterSpec(a);
SecretKeyFactory Secret_Key_Factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
KeySpec Key_Spec = new PBEKeySpec(SECRET_KEY.toCharArray(), SALT.getBytes(), 65536, 256);
SecretKey Temp_Secret_Key = Secret_Key_Factory.generateSecret(Key_Spec);
SecretKeySpec Secret_Key = new SecretKeySpec(Temp_Secret_Key.getEncoded(), "AES");
Cipher AES_Cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
AES_Cipher.init(Cipher.DECRYPT_MODE, Secret_Key, IV_Specifications);
return new String(AES_Cipher.doFinal(Base64.getDecoder().decode(strToDecrypt)));
} catch (Exception e) {
System.out.println("Error while decrypting: " + e.toString());
}
return null;
}
public static void main(String[] args) {
String Encrypted_String = "fV2B4Is2xva8C+SieUg01vRbGmZNbyTzV9+llBdv7kM=";
String Decrypted_String = AES_Decrypt.decrypt_AES(Encrypted_String);
System.out.println(Encrypted_String);
System.out.println(Decrypted_String);
}
}
위의 코드는 AES 256을 사용하여 암호화된 문자열을 해독합니다. 출력을 참조하십시오.
fV2B4Is2xva8C+SieUg01vRbGmZNbyTzV9+llBdv7kM=
www.delftstack.com