[PHP] mcrypt 방식 OpenSSL 방식으로 대체하기[PHP] mcrypt 방식 OpenSSL 방식으로 대체하기
Posted at 2018. 8. 30. 10:56 | Posted in PHP참고 : https://www.codegrepper.com/code-examples/php/encrypted+and+decrypted+in+php
참고 : https://gracefullight.github.io/2017/07/07/PHP-7-1에서-mcrypt-대체하기/
실제 업무중 API 연결과정정중에 문제가 발생하였다.
보안문제로 mcrypt 방식은 사용하지 않기로 하였기때문에 OpenSSL 방식으로 대체하여 해결 하였고.
그 방법은 아래와 같다.
# 암호화(Encrypt)
mcrypt 방식 |
$output = mcrypt_encrypt (MCRYPT_RIJNDAEL_128, $key, $val, MCRYPT_MODE_CBC, str_repeat (chr (0), 16)); |
/**
* AES256 암호화 *
* @param unknown $key 암호화키
* @param unknown $value 전달받은 데이터
* @return string
*/
$output = openssl_encrypt(pkcs5_unpad($val), "AES-256-CBC", $key, OPENSSL_RAW_DATA, str_repeat(chr(0), 16));
---------------------------------------------------------------------------------------------------------------
$output = openssl_encrypt(pkcs5_unpad($value), "AES-256-CBC", $key, OPENSSL_RAW_DATA, str_repeat(chr(0), 16));
---------------------------------------------------------------------------------------------------------------
/**
* AES256 복호화 *
* @param unknown $key 복호화 키
* @param unknown $value 전달받은 데이터
* @return string
*/
$output = pkcs5_pad(openssl_decrypt($value, "AES-256-CBC", $key, OPENSSL_RAW_DATA, str_repeat(chr(0), 16)));
-----------------------------------------------------------------------------------------------------------------
/**
* 패딩 알고리즘
* mcrypt방식에서 openssl 방식으로 변환을 위한 추가 함수
*/
function pkcs5_pad($text, $blocksize = 16) {
$pad = $blocksize - (strlen($text) % $blocksize);
return $text.str_repeat(chr($pad), $pad);
}
function pkcs5_unpad($text) {
$pad = ord($text{strlen($text)-1});
if($pad > strlen($text)) {
return $text;
}
if(!strspn($text, chr($pad), strlen($text) - $pad)) {
return $text;
}
return substr($text, 0, -1 * $pad);
}
'PHP' 카테고리의 다른 글
[PHP] DB 입력 or 출력시 따옴표(') 처리하기 (0) | 2018.10.02 |
---|---|
[PHP] 변수 or 배열의 정보를 표기하는 함수 (0) | 2018.09.17 |
cURL 연결 함수 (0) | 2018.08.30 |
[PHP] 문장 / 문자열의 의 대소문자를 변환해주는 함수 (0) | 2018.08.30 |
[PHP] PHPExcel 서식 변경하기 (2) | 2018.08.29 |