libs/INICls.php 파일에 보면 암복호화 메소드가 들어있다.
function SymmEncrypt($src_data, &$enc_data, $key, $iv) {
$size = mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_CBC);
$src_data = $this->pkcs5_pad($src_data, $size);
$cipher = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_CBC, '');
mcrypt_generic_init($cipher, $key, $iv);
$enc_data = mcrypt_generic($cipher, $src_data);
mcrypt_generic_deinit($cipher);
mcrypt_module_close($cipher);
if (!$enc_data)
return ENC_FINAL_ERR;
$enc_data = Base64Encode($enc_data);
return OK;
}
function SymmDecrypt($enc_data, &$dec_data, $key, $iv) {
$cipher = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_CBC, '');
mcrypt_generic_init($cipher, $key, $iv);
$dec_data = mdecrypt_generic($cipher, $enc_data);
mcrypt_generic_deinit($cipher);
mcrypt_module_close($cipher);
if (!$dec_data)
return false;
$dec_data = $this->remove_ctrl($dec_data);
return true;
}
위 두 함수는 PHP 7.2 버전 이상일 경우 오류로 인해 실행이 되지 않는다.
이유는 mcrypt 관련 함수가 PHP 7.2 버전 에서 부터 제거가 되어 없어졌기 때문이다.
대체 함수로 openSSL 함수를 이용할 수 있다.
위 메소드를 openSSL 함수로 변경해야 한다.
아래처럼 변경 시 정상작동 됨을 PHP 7.2.0 버전에서 확인했다.(이니시스 결제 취소에서 확인)
단 아래처럼 했을 때 문제가 발생 할 수도 있기 때문에 필히 적용 전 테스트를 해서 정상작동 여부를 확인해야 한다.
또한 기존 소스는 주석처리해서 보관해 두길 추천한다.
function SymmEncrypt($src_data, &$enc_data, $key, $iv) {
$method = 'des-ede3-cbc';
$block_size = strlen(openssl_encrypt($src_data, $method, $key, OPENSSL_RAW_DATA, $iv));
//$enc_data = openssl_encrypt($this->pkcs5_pad($src_data, $block_size), $method, $key, OPENSSL_RAW_DATA, $iv);
$enc_data = openssl_encrypt($src_data, $method, $key, OPENSSL_RAW_DATA, $iv);
if (!$enc_data)
return ENC_FINAL_ERR;
$enc_data = Base64Encode($enc_data);
return OK;
}
function SymmDecrypt($enc_data, &$dec_data, $key, $iv) {
$dec_data = openssl_decrypt($enc_data, 'des-ede3-cbc', $key, OPENSSL_RAW_DATA, $iv);
if (!$dec_data)
return false;
$dec_data = $this->remove_ctrl($dec_data);
return true;
}
'프로그래밍 > PHP' 카테고리의 다른 글
javascript fetch post json php recive data (0) | 2020.04.01 |
---|---|
PHP - MVC 뼈대 (0) | 2019.12.03 |
CS-CART 애드온 만들기 (0) | 2018.12.23 |
라라벨 설치(PHPstorm, composer) (0) | 2018.12.22 |
서브도메인으로 접속시 루트도메인으로 이동(redirect)시키기(.htaccess 이용) (0) | 2018.11.10 |