php, mcrypt_ecb의 deprecated

2016. 8. 3. 17:53개발/PHP

php7 에서는 mcrypt_ecb가 removed 되었다.

php5.5부터 deprecated가 되었는데 그것도 모르고 잘만 쓰고 있었다...


Warning

This function was DEPRECATED in PHP 5.5.0, and REMOVED in PHP 7.0.0.

Alternatives to this function include:


그래서 대체 함수를 무엇으로 할까 하다가 mcrypt_encrypt() 를 이용하게 되었다.

기존에는 key를 20자리를 썼었는데 변경하면서 16, 24, 32자리만 된다고 해서 24자리로 업데이트를 하였다.




기존

base64_encode(mcrypt_ecb(MCRYPT_GOST, $key, $value, MCRYPT_ENCRYPT));

mcrypt_ecb(MCRYPT_GOST, $key, base64_decode($encry_code), MCRYPT_DECRYPT);


변경

$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);

$iv = mcrypt_create_iv($iv_size, MCRYPT_DEV_URANDOM);

  

$encry = base64_encode($iv . mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $payload, MCRYPT_MODE_CBC, $iv));


echo mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, substr(base64_decode($encry), $iv_size, strlen(base64_decode($encry))), MCRYPT_MODE_CBC, substr(base64_decode($encry), 0, $iv_size));