반응형
PHP5를 사용하다 PHP7으로 버전을 업데이트 후
기존에 사용하던 mcrypt_encrypt와, mcrypt_decrypt가 작동하지 않는다
기존 사용 소스는 다음과 같다
function encrypt ($key, $value, $IV)
{
$padSize = 16 - (strlen ($value) % 16) ;
$value = $value . str_repeat (chr ($padSize), $padSize) ;
$output = mcrypt_encrypt (MCRYPT_RIJNDAEL_128, $key, $value, MCRYPT_MODE_CBC, $IV) ;
return base64_encode ($output) ;
}
function decrypt ($key, $value, $IV)
{
$value = base64_decode ($value) ;
$output = mcrypt_decrypt (MCRYPT_RIJNDAEL_128, $key, $value, MCRYPT_MODE_CBC, $IV) ;
$valueLen = strlen ($output) ;
if ( $valueLen % 16 > 0 )
$output = "";
$padSize = ord ($output{$valueLen - 1}) ;
if ( ($padSize < 1) or ($padSize > 16) )
$output = "";
for ($i = 0; $i < $padSize; $i++)
{
if ( ord ($output{$valueLen - $i - 1}) != $padSize )
$output = "";
}
$output = substr ($output, 0, $valueLen - $padSize) ;
return $output;
}
PHP7에서는 없어졌단다..
구글링 결과 다음과 같이 하니 잘 작동이된다
function encrypt ($key, $value, $IV) {
$value = base64_encode(openssl_encrypt($value, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $IV));
return $value;
}
function decrypt ($key, $value, $IV) {
$value = base64_decode ($value) ;
$value = openssl_decrypt($value, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $IV);
return $value;
}
소스코드가 더욱 간단해졌다
참쉽죠?
반응형
'WEB > Etc' 카테고리의 다른 글
[vue.js] <li> v-for 에러 (0) | 2021.11.01 |
---|---|
[PHP] 로그인 페이지를 만들어보자 (DB사용) (0) | 2020.10.08 |
[PHP] CURL 홈페이지 파싱, 멀티 (0) | 2020.09.29 |
댓글