[PHP] PHP에서 암호화와 복호화 하는 방법

2023. 12. 30. 21:31카테고리 없음

1. 암호화 하는 방법

암호화 함수 openssl_encrypt

openssl_encrypt('내용', '암호화 종류', '키 값', true(or false), str_repeat(chr(0), 16)으로 사용한다.

AES는 대칭키 방식으로 암호화하는 키와 복호화하는 키가 같다. 그러면 위의 키 값은 암호화나 복호화를 할 때 사용하는 비밀번호가 되는 것이다.

<?php $key = 'testKey'; echo openssl_encrypt("실버는 귀여워", 'aes-256-cbc', $key, true, str_repeat(chr(0), 16)); ?>

여기서 true를 쓴다면 결과는 깨진 글자로 출력이 된다. 하지만 false를 하면 비트별 분리를 하지 않기 때문에 제대로 된 문자가 나오는 차이가 있다. 둘 다 복호화에 영향을 주지 않는다.

 

2. 복호화 하는 방법​

복호화 함수 openssl_decrypt

openssl_decrypt는 같은 키 값을 사용하면 된다.

 
<?php $key = 'testKey'; echo openssl_decrypt('실버는 귀여워', 'aes-256-cbc', $key, true, str_repeat(chr(0), 16)); ?>

 

 


base64

2진 데이터를 아스키 코드에 해당하는 문자열로 변경해주는 방식이다. 2진 데이터를 아스키 형태로 변경을 base64_encode가 처리하고, 아스키 형태를 2진 데이터로 복원하는 것을 base64_decode가 처리한다.

$str = "실버는 귀여워"; echo base64_encode($str);

여기서 나오는 결과값을,

$str = '결과값'; echo base64_decode($str);

이렇게 넣어주면 결과는 실버는 귀여워 가 나오게 된다.


rawurldecode()

url인코딩된 문자열을 디코딩하는 함수이다.

(여기서 url인코딩이란 문자나 특수문자를 웹 서버와 브라우저에서 보편적으로 허용되는 형식으로 변화하는 매커니즘이다. 문자변환이 이뤄지는 전송매체에서 url을 보호하기 위한 기법이다.

url은 아스키 문자 집합을 사용해 인터넷을 통해서만 전달할 수 있기 때문에 유효한 아스키 형식으로 변환될 필요가 있다. 그렇기 때문에 위의 base64 인코딩 과정을 거치면 좋은 것 같다.)

$key = "키값"; $str = "문자열값"; $decode = base64_decode ($str); $decrypt = openssl_decrypt(rawurldecode($decode), "aes-256-cbc", $key, true, str_repeat(chr(0),16));

 

반응형