2013-11-24 2 views
0

PHP에서 첫 번째 시도 및 서버가 PHP < 5.5 버전을 실행하므로 password_compat로 작업하고 있습니다.데이터베이스에서 다시 일치 할 수없는 소금에 절인 해시가있는 PHP 로그인 시스템

나는 데이터베이스에 자동으로 저장된 사용자 세부 정보 집합을 가지고 있습니다. 나는 데이터베이스를 조회,받을 확인하려면 각 사용자는 $random_salt = mcrypt_create_iv(24, MCRYPT_DEV_URANDOM);에서 생성 된 고유 소금을 가지고 있는데 BLOB으로 데이터베이스에 보관하는 시도하고 그에 따라 나는 다음과 같은

$options = array('cost' => 8, 'salt' => $random_salt); 
$password = password_hash($password, PASSWORD_BCRYPT, $options); 

내 해시 된 암호를 저장 내 일치하는 salt 속성을 변수 $ salt에 전달하고 저장된 해시 암호를 가져옵니다. 마지막으로 다음을 사용하여

$options = array('cost' => 8, 'salt' => $salt); 
$password = password_hash($password, PASSWORD_BCRYPT, $options); 
$intVar = (int) password_verify($password, $db_password); 

지금까지 단 하나의 로그인에 대한 결과는 일치하지 않습니다.

어디로 잘못 가고 있습니까? 소금에 대한 데이터베이스 속성 데이터 유형입니까? password_hash를 어떻게 사용합니까?

답변

2

나는 자동으로 데이터베이스에 들어갔을 때 비밀번호의 끝에 "\ r"이라는 캐리지 리턴이 여전히 있음을 발견했습니다. 탭으로 구분 된 파일을 통해 읽습니다. 이 프로그램은 전체적으로 옳았습니다. 내 암호가 "\ r"에 잘못되었습니다.

+0

이 문제를 해결하고 솔루션을 게시하는 데 도움이됩니다 (및 upvote). – crafter