mcrypt_encrypt() 에러

"mcrypt_encrypt(): Key of size 5 not supported by this algorithm. Only keys of sizes 16, 24 or 32 supported in index.php on line 9"

암복호화 가 필요할 때 흔히 사용하는 mcrypt_encrypt() 함수! PHP 5.6 에서는 제약사항(?) 이 생겨났습니다.
암복호화 시 사용하는 key의 길이를 16, 24, 32 에 맞게 사용해야 한다는 것입니다.

해결 방법

str_pad() 함수를 이용해서 쉽게 해결할 수 있습니다.
아래 소스를 보시면 좀 더 이해가 편할 겁니다.

function aes_decrypt($plainText, $key){
    $key = str_pad($key, 16, chr(0));   // 자릿수 채우기

    $iv = mcrypt_create_iv( mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_DEV_URANDOM);

    $plainText = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $plainText, MCRYPT_MODE_ECB, $iv);
    
    return rtrim($plainText, "\0..\16");
}

function aes_encrypt($plainText, $key){
    $key = str_pad($key, 16, chr(0));   // 자릿수 채우기

    $iv = mcrypt_create_iv( mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_DEV_URANDOM);

    return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plainText, MCRYPT_MODE_ECB, $iv);
}

$sampleText = 'This string was AES-128';
$uniqueKey = 'bc29dl41a';

$encrypt = aes_encrypt($sampleText, $uniqueKey);

echo 'encrypt : ' . $encrypt . PHP_EOL;

$decrypt = aes_decrypt($sampleText, $uniqueKey);

echo 'decrypt : ' . $decrypt . PHP_EOL;