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

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

QA

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

본문

비밀번호를 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));
답변을 작성하시기 전에 로그인 해주세요.
전체 14,904
QA 내용 검색
filter #php ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT