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

제가 암호화를 제대로 이해를 못하고있어서 그런지 몇시간째 헤매고있네요 ㅠㅠ

소스 아래에 첨부하였습니다

hash:make나 crypt::encrypt를 이용해서 암호화를 하였고

다시 역으로 decrypted함수를 사용하여 복호화를 했습니다.

예를들면 안녕하세요 암호화했다가 다시 복호화하니까 안녕하세요 그대로 출력하더라구요


여기서 질문입니다! 그래서 암호화된 값을 디비에 넣었습니다.

안녕하세요 라는 값을 암호화했을때 예를들어 처음에 fff44라고 나와서 이걸 디비에 바로 넣었습니다.

근데 그 다음에 select를 걸어서 암호화 값을 비교할려고 암호화했을때는]

fff44가 나와야하는데 fff555 이런식으로 다른값이 나와서 계속 비교를 못합니다.

원래 암호화값은 계속 바뀌나요?

기존php에서는 패스워드랑 특정 문자열을 조합해서 하고있는데 라라벨은 그렇지가 않더라구요.

암호화에서 복호화는 잘되는데, 암호화값이 계속 바껴서 디비에서 비교를 못하고있네요  이거 방법없을까요?

몇시간째 헤매고있네요 ㅎㅎ

    CommentAdd your comment...

    1 answer

    1.  
      2
      1
      0

      Hash::make 를 통해서 해싱을 하면 내부적으로 bcrypt 를 사용하게 되는데요. 

      이때 결과값이 항상 달라지는것이 정상입니다. 

       

      Crypt::encrypt, Crypt::decrypt 의 경우에는 암호화 한 값을 복호화 하는것이 가능하지만

      Hash::make 를 통해서 해싱한 값은 매번 그 결과가 다릅니다. 

       

      일반적으로 사용자의 인증을 위해서 패스워드를 해싱처리하며,

       

      만약 모든 사용자의 패스워드를 역으로 알 수 있다면, 보안적으로 위험하겠죠. 

       

      질문해주신 시나리오상에서는 암호화 값이 매번 바뀌는것이 정상이고, 

      사용자 정보를 기반으로 DB 에 저장된 값을 가져온 다음에 Hash::check 를 통해서 유효한 값이 맞는지 확인합니다.

       

      https://laravel.kr/docs/5.2/hashing

      https://laravel.kr/docs/5.2/encryption

      를 참고하시면 조금 더 이해가 되실것 같습니다. 

      1. 이태희

        암호화에 대한 이해가 많이 부족했는데 덕분에 많이 이해하게 되었습니다!! 감사합니당

      CommentAdd your comment...