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;
'PHP' 카테고리의 다른 글
[PHP]라인 봇(LINE BOT) 사용을 위한 Webhook 기능 사용하기 (0) | 2016.11.16 |
---|---|
[PHP] password_hash 패스워드 함수 사용하기. (0) | 2016.07.21 |
[PHP] CURL로 첨부파일 포워딩(forwarding) 하기 (0) | 2016.01.20 |
[PHP] 세션(session) 타임아웃(timeout) 설정하기 "php.ini" (0) | 2015.12.10 |
[PHP] Redis 메모리 캐시 연결하기(php-pecl-redis) (0) | 2015.10.26 |