질문을 삭제하지 말아주세요.!
 
1
0
-1

현재 개인정보 수정 페이지를 만들고있는데

해쉬때문에 질문 올려요

먼저 로그인된 상태에서 개인정보수정을 누르면 비밀번호 확인 페이지로 넘어가고

입력한 값을 가지고 데이터베이스에 있는 유저정보의 비밀번호와 비교하는데

$userpass = \App\User::where('email',$request->input('user-id'))->first()->password;
$inputvalue = bcrypt($request->input('user-pass'));
if($userpass === $inputvalue){
return view('auths.statuseditcheck');
} else {
return "비밀번호 불일치";
}


이렇게 코딩했습니다 

사용자가 입력한 값을 bcrypt로 암호화 하고 이 값을 유저테이블패스워드 값하고 비교해서 

맞으면 다른 페이지를 리턴하려 하는데 똑같은 비밀번호 입력해도 두개의 암호화 된 값이 틀리네요 ,, 

bcrypt 에서부터 잘못된것같은데,, 제가 모르는 무언가가 있는거 같은데 조언좀 부탁드리겠습니다 .... 


비밀번호 123456

유저테이블 암호값 : $2y$10$FlxFGMlDhFZoLyFR4XN0Fu6I4NQdq7wG5Im3NDeMgchk32vq4KutW

inpu 입력 암호값 : $2y$10$CutK2b2kXf8E8DhIvonBhuzN5EIQaW7A5rBpS2ZYWlO8rCbXlmUx.

다른 함수일까요 ,,, 두번 해쉬된 건지 잘 모르겠습니다,.,,, 



    CommentAdd your comment...

    2 answers

    1.  
      1
      0
      -1

      bcrypt는 같은 string을 넘겨도 계속 다른 결과물을 만들어냅니다

      md5나 sha256과 같은 단방향 해시함수와는 다릅니다

      자세한 내용은 아래 내용을 읽어보세요

      https://d2.naver.com/helloworld/318732


      bcrypt로 비밀번호 일치를 확인하려면, 해시된 값과 해시되지 않은 plain text를 verify함수에 넣고 올바른지 체크하는 방법이 유일합니다

      $bcrypt = new Bcrypt(15);
      
      $hash = $bcrypt->hash('password');
      $isGood = $bcrypt->verify('password', $hash);
        CommentAdd your comment...
      1.  
        1
        0
        -1

        라라벨의 인증기능을 쓰지 않고 직접 구현하시려면

        패스워드 암호화는 password_hash() 

        검증은 password_verify()

        를 쓰시는게 좋습니다.

          CommentAdd your comment...