암호화된 비밀번호가 가끔씩 안되는 경우가 있어요.

암호화된 비밀번호가 가끔씩 안되는 경우가 있어요.

QA

암호화된 비밀번호가 가끔씩 안되는 경우가 있어요.

답변 2

본문

비밀번호를 pw_encrypt() 함수를 사용해서 암호화를 하고 있는데

가끔씩 pw_match_check()  함수를 이용해서 비밀번호가 일치하는지 체크하는데 안되는 경우가 발생하네요.

어떤 점을 체크해 봐야 할까요?

 

function pw_encrypt($password)
{
    for ( $i = 1; $i <= 8; $i++ )
    {
        $seed .= substr('0123456789abcdefghijklmnopqrstuvwxyz@#$%^&*', rand(0,15), 1);
    }
    return base64_encode(hex2bin2(sha1($seed.$password).$seed));
}

function pw_match_check($password, $password_stored)
{
    $stored_seed = substr(bin2hex(base64_decode($password_stored)),40,8);
    if (base64_encode(hex2bin2(sha1($stored_seed.$password).$stored_seed)) == $password_stored)
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}

이 질문에 댓글 쓰기 :

답변 2

hex2bin2함수를 따로 만드신게 아니라면 hex2bin2 => hex2bin 오타신것 같습니다.

수정후 정상작동은 합니다.


<?php
function pw_encrypt($password)
{
    $seed = '';
    
    for ( $i = 1; $i <= 8; $i++ )
    {
        $seed .= substr('0123456789abcdefghijklmnopqrstuvwxyz@#$%^&*', rand(0,15), 1);
    }
    return base64_encode(hex2bin(sha1($seed.$password).$seed));
}
function pw_match_check($password, $password_stored)
{
    $stored_seed = substr(bin2hex(base64_decode($password_stored)),40,8);
    $hash = base64_encode(hex2bin(sha1($stored_seed.$password).$stored_seed));
    if ( $hash === $password_stored)
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}
echo $password_stored = pw_encrypt('password!');
echo '<br>'.PHP_EOL;
var_dump(pw_match_check('password', $password_stored));
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #php ×
전체 15,429
© SIRSOFT
현재 페이지 제일 처음으로