본문 바로가기
WEB/Etc

[PHP] PHP7 mcrypt_encrypt, openssl_encrypt

by 얼빵이 2020. 10. 22.
반응형

 

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

댓글


TOP

TEL. 02.1234.5678 / 경기 성남시 분당구 판교역로