잡담소장소

Encrypt & Decrypt in PHP 본문

Study ;3

Encrypt & Decrypt in PHP

알 수 없는 사용자 2010. 9. 17. 14:51




오늘은 팀장님께서 정보 암호화를 위해 암복호화 함수를 알아보라고 하셨다
원래는 DES나 RC2나 RC4같은 걸 따로 찾아볼까 하다가
php에서 검색해보니 따로 암복호화 함수를 제공하고 있었다.
(뭐 당연할거라 생각하긴 했지만..-_-;;)


구글링으로 찾아본 결과 간단한 테스트 소스를 얻을 수 있었다.



//시작을 알리는글을 가볍게 써보자 :3 ㅋㅋ
echo "알고리즘 리스트\r\n";

//랜덤한 수를 생성하도록 한다. 딱히 변수로 받지 않아도 되는 듯염ㅋ
srand();

//키가 될 값
$s_key = "encrypt seed key";

//이니셜벡터(initial vector 를 생성하기 위해 일단 사이즈 생성)
$s_vector_iv_size = mcrypt_get_iv_size(MCRYPT_3DES, MCRYPT_MODE_CBC);
//사이즈에 맞는 벡터 생성
$s_vector_iv = mcrypt_create_iv($s_vector_iv_size, MCRYPT_RAND);

 

$str = "암호화 테스트";

/*
암호화
mcrypt_encrypt를 이옹해서 사용하고자 하는 대칭암호화와 키값, 암호화하고자하는 값, 모드, 이니셜벡터값들을 넣어준다.
암호화만으로 끝내는것이 아니라 base64와 hex값으로 변환
*/
$en_str = mcrypt_encrypt(MCRYPT_3DES, $s_key, $str, MCRYPT_MODE_CBC, $s_vector_iv);
$en_base64 = base64_encode($en_str); //base64 encoding
$en_hex = bin2hex($en_str); // hex로 변환

echo "암호화된 메세지: $en_str \r\n";
echo "base64로 인코딩한경우:$en_base64\r\n";
echo "hex로 변환한 경우: $en_hex\r\n";

/*
복호화
암호화된 값을 hex로 변환하고 base64로 인코딩했기 때문에
다시 되돌려줘야한다.
아니면 이상한 값이 복호화됨ㅋ
*/

$de_str = base64_decode($en_base64);
$de_str = pack("H*", $en_hex); // hex로 변환한 ascii를 바이너리로 변환
$out_str = mcrypt_decrypt(MCRYPT_3DES, $s_key, $en_str, MCRYPT_MODE_CBC, $s_vector_iv);

echo "복호화된 값: $out_str\r\n";



이제 이 방법을 대입해서 코딩하면 끝 '~'ㅋ
반응형
Comments