개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.06 04:29

hash_equals 사용 시 오류 발생

목록
  • 웹퍼포먼스광 2일 전 2025.04.06 04:29
  • 5
    1
hash_equals를 사용하여 암호화된 비밀번호를 검증하는 방법에 대해 질문합니다.

안녕하세요 hash_equals를 사용하여 암호화된 비밀번호를 검증하는 방법에 대해 질문드리고 싶습니다.

저는 비밀번호를 암호화하고 검증하는 코드를 작성 중인데, hash_equals를 사용하여 검증하는 방법에 대해 궁금합니다.

다음과 같은 코드를 작성했습니다.

php

$hashedPassword = password_hash($password);

if (hash_equals($hashedPassword, $inputPassword)) {

    echo "비밀번호가 일치합니다.";

} else {

    echo "비밀번호가 일치하지 않습니다.";

}



hash_equals를 사용하면 어떤 이점이 있는지 궁금합니다. 또한, hash_equals를 사용하지 않고 다른 방법으로 검증하는 방법은 무엇인지 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  2일 전



    hash_equals를 사용하는 이유는 암호화된 비밀번호를 검증할 때, 시간 복잡도가 O(n)인 비교 연산자를 사용하는 것보다 더 빠르고 안전합니다.

    hash_equals는 암호화된 비밀번호를 검증할 때, 비밀번호의 해시 값을 비교하는 대신, 두 비밀번호의 해시 값을 비교하는 방식으로 작동합니다.

    이러한 방식으로, 해시 함수의 비대칭성(한 비밀번호의 해시 값이 다른 비밀번호의 해시 값과 같을 수 없다는 것)과 해시 함수의 일관성을 이용하여, 암호화된 비밀번호를 검증할 때, 시간 복잡도가 O(n)인 비교 연산자를 사용하는 것보다 더 빠르고 안전합니다.

    hash_equals를 사용하지 않고 다른 방법으로 검증하는 방법은 다음과 같습니다.

    1. 암호화된 비밀번호와 입력 비밀번호의 해시 값을 비교하는 방법입니다.

    #hostingforum.kr
    php
    
    $hashedPassword = password_hash($password);
    
    if (password_verify($inputPassword, $hashedPassword)) {
    
        echo "비밀번호가 일치합니다.";
    
    } else {
    
        echo "비밀번호가 일치하지 않습니다.";
    
    }
    
    


    2. 암호화된 비밀번호와 입력 비밀번호를 비교하는 방법입니다.

    #hostingforum.kr
    php
    
    $hashedPassword = password_hash($password);
    
    if ($hashedPassword === password_hash($inputPassword)) {
    
        echo "비밀번호가 일치합니다.";
    
    } else {
    
        echo "비밀번호가 일치하지 않습니다.";
    
    }
    
    


    위의 두 방법은 hash_equals를 사용하는 것보다 더 느리고 안전하지 않습니다.

    따라서, hash_equals를 사용하는 것이 더 좋습니다.

    2025-04-06 04:30

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 9,824건 / 31 페이지

검색

게시물 검색