[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 |
[PHP] ERROR : unterminated string literal[PHP] ERROR : unterminated string literal
Posted at 2018. 3. 19. 09:31 | Posted in PHP■ 에러 : unterminated string literal
기존 코드를 PHP5 버전에서 PHP7 버전으로 옮기고 아파치 버전도 2.4로 올린 환경에서 사용중 발생하였다.
# 소스코드 - 에러가 발생한 경우
<?php |
# 출력결과
에러가 발생했던 이유는 \n의 사용중에 문제가 발생하였다.
기존 PHP5버전에서는 위 코드가 잘 작동하였지만 PHP7부터는
unterminated string literal 발생하더라.
# 소스코드 - 에러가 발생하지 않는 경우
<?php |
무언가 설정을 바꿔주면 해결이 될 것으로 생각이 되지만.
그부분이 어디인지는 파악하지 못하였고.
그런 부분을 일부러 건드리기보다는
PHP7버전의 기본적인 설정에 최대한 따르는 것이 좋다고 생각하므로.
앞으로는 \\n을 붙여서 사용하려고 한다.
'PHP' 카테고리의 다른 글
[PHP] PHPExcel 서식 변경하기 (2) | 2018.08.29 |
---|---|
[PHP] 변수에 달러 기호가 삽입되는경우 (0) | 2018.08.10 |
[PHP] DB 입출력시 따옴표( ' )를 처리방법 (0) | 2018.04.06 |
[PHP] 모바일 접속 여부 체크방법 (0) | 2018.03.29 |
[PHP] PDO 사용법 정리 (7) | 2018.03.27 |