본문 바로가기
MySql

MySQL PHP 및 MYSQL : bcrypt 해시 사용 및 데이터베이스로 암호 확인

by 베이스 공부 2021. 2. 5.
반응형


$bcrypt = new Bcrypt(12);
$pass = $_POST['password']; //register password field
$hash= $bcrypt->hash($pass);

// then inserts $hash into database with users registered email (I've checked my mysql database and it indeed has an hashed item

그런 다음 이메일 및 비밀번호 필드로 구성된 로그인 페이지가 있습니다. 내 생각은 이메일 주소가 내 데이터베이스에서 고유하다는 것입니다. 이를 염두에두고 먼저 사용자의 이메일 주소를 확인하는 스크립트를 만든 다음 기존 이메일 주소가있는 경우이 주소로 해시 비밀번호를 확인합니다.

$bcrypt = new Bcrypt(12);

$email = $_POST['email']; //from login email field
$pass_l = $_POST['password']; // from login password field
$hash_1= $bcrypt->hash($pass_1);

$chk_email= $dbh->prepare("SELECT password FROM table WHERE email = ?");
$chk_email -> execute(array($email));

while($row = $chk_email->fetch(PDO::FETCH_ASSOC)){
    $chk_pass = $row['password']; //inside a while loop to get the password
    $pass_isGood = $bcrypt->verify($hash_1, $chk_pass);
    var_dump($pass_isGood); // I'm getting false

}

내가 뭘 잘못하고 있는지 잘 모르겠지만 사실대로해야합니다. 그리고 내 테이블 필드를 text 또는 varchar (256) 로 설정했습니다.

 

해결 방법

 


두 번째 해시 된 암호를 verify () 에 대신 전달한 것 같습니다. 이것이 작동하지 않는 이유입니다. 일반 텍스트 암호를 첫 번째 인수로 전달하십시오.

 

참조 페이지 https://stackoverflow.com/questions/11481199

 

 

반응형

댓글