728x90
300x250
c++ 단에서 openssl 를 이용하여 파일을 암호화한것을 php 단에서 복호화 해주는 작업을 맡았다
그냥 단순하게 암호화를 할때 key값만 있으면 되는줄 알았는데 아니었다.
AES-256-CBC 방식은 iv(Initialization vector) 라고 값이 별도로 또 첨부가 되는데 그냥 쉽게 제 2의 키 라고 이해하면 좋
을것 같다. (마치 salt 방식같은 그런 느낌 ..)
참고로 iv 는 16자리여야 한다 ~
복호화를 하는데 자꾸 안되서 왜그런가했더니 멍청하게 base64_decode 가 떡하니 써있는데 저거 하나 캐치못하고 삽질 겁나했다 어우 .. 정신좀 차리자 쪽팔리게 ..
//암호화된 파일 가져오기
$encrypted_code = file_get_contents("./enc/".$fileName);
//이름 바꿔주고 저장하기
$fileName_dec = str_replace ("enc", "dec", $fileName);
file_put_contents("./dec/".$fileName_dec, $decrypted_code);
openssl_encrypt ( string $data , string $cipher_algo , string $passphrase , int $options = 0 , string $iv = "" , string &$tag = null , string $aad = "" , int $tag_length = 16 ) : string|false
openssl_decrypt ( string $data , string $cipher_algo , string $passphrase , int $options = 0 , string $iv = "" , string $tag = "" , string $aad = "" ) : string|false
$data = 파일 혹은 텍스트 등등 데이터
$cipher_algo = 암호화 타입(?) 구분 ex) aes-256-cbc
$options = OPENSSL_RAW_DATA(1 or true) OPENSSL_ZERO_PADDING(0 or false)
$iv = 제 2의 키 (cbc 사용할때 첫번째 암호화 블록)
나머지는 사용안했음
$key = "키 값 선언";
function my_encrypt($data, $key) {
$encryption_key = base64_decode($key);
//$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
$iv = "1234567891234567";
$encrypted = openssl_encrypt($data, 'aes-256-cbc', $encryption_key, 0, $iv);
return base64_encode($encrypted . '::' . $iv);
}
function my_decrypt($data, $key) {
$encryption_key = base64_decode($key);
list($encrypted_data, $iv) = explode('::', base64_decode($data), 2);
$iv = "1234567891234567";
return openssl_decrypt($encrypted_data, 'aes-256-cbc', $encryption_key, 0, $iv);
}
//암호화
$encrypted_code = my_encrypt($code, $key); //Encrypt the code.
//복호화
$decrypted_code = my_decrypt($encrypted_code, $key);//Decrypt the encrypted code.
728x90
300x250
'IT > PHP' 카테고리의 다른 글
[PHP] 이미지 사이즈 변경 및 용량 줄이기 (0) | 2021.05.10 |
---|---|
[PHP] 대용량 파일 업로드 할 시 체크사항 (0) | 2021.03.31 |
[PHP] 특정폴더 하위 모든 파일 이름 변경 rename (0) | 2021.03.25 |
[PHP + Mysql] Rownum 적용 SET @ROWNUM:=0; (0) | 2021.01.28 |
[PHP] Window 에 Composer 설치 (설치시 ssl 관련 오류해결) (0) | 2021.01.11 |