본문 바로가기

Web/PHP

md5를이용한 암호/복호화

키를 이용한 암호화/복호화 함수입니다.
출처는 http://man.phpschool.com/이고
복잡한 소스를 약간 정리했습니다.
이정도면 실전에 응용해도 될정도로 충분히 안전하고 편리하다고 생각됩니다.
영문, 한글, 특수문자 테스트 결과도 좋았습니다.
<br><br>
<?
function bytexor($a,$b)
{
    $c="";
    for($i=0;$i<16;$i++)$c.=$a{$i}^$b{$i};
    return $c;
}


function decrypt_md5($msg,$key)
{
    $string="";
    $buffer="";
    $key2="";

    while($msg)
    {
        $key2=pack("H*",md5($key.$key2.$buffer));
        $buffer=bytexor(substr($msg,0,16),$key2);
        $string.=$buffer;
        $msg=substr($msg,16);
    }
    return($string);
}

function encrypt_md5($msg,$key)
{
    $string="";
    $buffer="";
    $key2="";

    while($msg)
    {
        $key2=pack("H*",md5($key.$key2.$buffer));
        $buffer=substr($msg,0,16);
        $string.=bytexor($buffer,$key2);
        $msg=substr($msg,16);
    }
    return($string);
}

// 사용 예
$message = "다양한 원본 메시지 東西南北 ABC abc 123 ※ ↔ ";
$key = "아..이정도면 매우 복잡한 키--;";

$encrypted = encrypt_md5($message, $key);
$decrypted = decrypt_md5($encrypted, $key);

echo "Encrypted = $encrypted";
echo "                                 <HR>";
echo "Decrypted = $decrypted";
?>

'Web > PHP' 카테고리의 다른 글

kimsplus 파일버전 게시판 합치기  (0) 2013.09.26
리스트 디비(area)  (0) 2013.09.26
프로텍트 패턴  (0) 2013.09.26
history.back()시 내용삭제 문제 해결책  (0) 2013.09.26
setcookie time  (0) 2013.09.26