php에서 지원하는 암호와 방법은 crypt, md5를 이용하는 것인데
이들은 모두 문자열을 암호화하여 리턴하는 함수이며
암호화된 것을 해독하는 역함수가 존재하지 않는 단방향 암호화함수이다.
그러므로 암호화를 한 다음에는 아무도 원래의 내용이 무엇인지 알 수 없다.
md5 ( message digest algorithm 5 )
-RSA 암호 개발자가 개발한 메시지 다이제스트 함수 알고리즘으로 주로 데이터의 오류 검출에 이용
Hash
-특정한 데이터를 고정 길이의 유일한 값으로 대응되도록 하는것
crypt함수
-유닉스계열에서 기본적으로 지원하는 암호화 방식으로
입력받은 키 값에 의존하여 암호화한 후 저장될 변수에 저장
여기서 키 값이란 암호화를 하는데 있어서 의존하는 값으로, 키 값에 따라 암호화된 결과는 다르게 나타나며, 키 값은 두개의 문자로 이루어져야 한다.
저장될 변수 = crypt (문자열, 키값);
<?
$a="abcde";
echo crypt($a, "1a");
?>
결과는 1a8AAA/amoVDA
->결과는 13자리로 동일하다
<?
$a="abcde";
echo crypt($a, "2z");
?>
결과는 2z6wBLPW0IjT6
->암호화된 결과물의 맨 앞 두자리는 키값이 들어가게 됨
키 값에 한자리만 넣게 되면
나머지 한자리에는 $로 채우게 된다
->예> 키 값을 2로 넣으면 그 값은 2$ 로 주었을때와 동일하다.
키 값을 넣지 않으면 임의의 키 값을 실행하며 , 그 결과는 계속 다르게 나타난다.
md5
-실제로 암호화라기 보다는 단순히 어떠한 내용의 hash값을 계산해주는 것으로
crypt와 마찬가지로 해독방법이 존재하지 않는 단방향암호화 함수이다.
저장될 변수 = md5 (문자열);
<?
$a="abcde";
echo md5($a);
?>
결과는 ab56b4d92b40713acc5af89985d4b786
->결과는 32자리
<?
$a="abcdefgh";
$b="abcdefghi";
echo crypt ($a, 12). "<br>";
echo crypt($b,12)."<br>";
echo md5($a). "<br>";
echo md5($b). "<br>";
?>
결과는
12cmzKaxhUaiY
12cmzKaxhUaiY
e8dc4081b13434b45189a720b77b6818
8aa99b1f439ff71293e95357bac6fd94
->변수a는 8자, 변수b는 9자 이다
변환할 결과를 보면
크립트는 8개의 문자열만 취하고 나머지는 잘라 버린 후에 암호화한다는 것을 알 수 있다.
반면 md5는 8자 이상의 문자열을 지원한다.