
openssl_encrypt 함수는 다양한 암호화 모드와 알고리즘을 지원합니다. AES-256-CBC를 사용할 때는 암호화 모드를 'AES-256-CBC'로, 키를 32비트(256비트 키의 4바이트) 길이의 바이너리 문자열로 지정합니다.
예를 들어, AES-256-CBC를 사용하여 데이터를 암호화하려면 다음과 같은 코드를 사용할 수 있습니다:
#hostingforum.kr
php
$plaintext = "Hello, World!";
$iv = openssl_random_pseudo_bytes(16); // 16바이트의 난수 생성
$key = openssl_random_bytes(32); // 32바이트의 랜덤 키 생성
$cipher = 'AES-256-CBC';
$encrypted = openssl_encrypt($plaintext, $cipher, $key, 0, $iv);
echo '암호화 모드: ' . $cipher . "n";
echo '암호화 키: ' . bin2hex($key) . "n";
echo '초기화 벡터: ' . bin2hex($iv) . "n";
echo '암호화된 데이터: ' . bin2hex($encrypted) . "n";
// 암호화 모드에 따라 암호화된 데이터의 길이가 달라지는 이유는 다음과 같습니다.
// 암호화 모드는 데이터를 블록으로 나누고, 각 블록을 암호화합니다. AES-256-CBC는 16바이트의 블록 크기를 사용합니다.
// 따라서, AES-256-CBC를 사용할 때, 데이터의 길이가 16의 배수가 되지 않으면, 데이터를 채우는 기법을 사용하여 16바이트로 맞춤니다.
// 예를 들어, 17바이트의 데이터를 암호화할 때, 1바이트를 추가로 채운 후 16바이트의 블록으로 나누어 암호화합니다.
// 이와 같이, 암호화 모드에 따라 암호화된 데이터의 길이가 달라질 수 있습니다.
2025-04-22 03:20