개발자 Q&A

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

2025.03.10 05:46

sodium_crypto_pwhash_str_verify 함수 사용 시 오류 발생

목록
  • Tailwind매니아 12일 전 2025.03.10 05:46
  • 7
    1
저는 recently sodium_crypto_pwhash_str_verify 함수를 사용하여 비밀번호를 검증하고자 하는데, 오류가 발생하고 있습니다.

저는 비밀번호가 일치하는지 확인하고자 하며, 아래와 같은 코드를 작성하였습니다.

c

#include 



int main() {

    unsigned char password[32];

    unsigned char stored_hash[32];

    unsigned char input_password[32];



    // 비밀번호를 입력받고 해시를 생성합니다.

    sodium_pwhash_str(password, strlen(password), "비밀번호", strlen("비밀번호"));

    sodium_pwhash_str(stored_hash, 32, "비밀번호", strlen("비밀번호"));



    // 사용자가 입력한 비밀번호가 일치하는지 확인합니다.

    if (sodium_crypto_pwhash_str_verify(stored_hash, "비밀번호", strlen("비밀번호"))) {

        printf("비밀번호가 일치합니다.n");

    } else {

        printf("비밀번호가 일치하지 않습니다.n");

    }



    return 0;

}



여기서 오류가 발생하는 부분은 무엇이며, 어떻게 해결할 수 있는지 알려주시겠습니까?

    댓글목록

    profile_image
    나우호스팅  12일 전



    오류는 `sodium_pwhash_str` 함수에서 발생하는 것입니다. 이 함수는 비밀번호를 해시화하는 함수지만, 첫 번째 인자로 비밀번호를 받는게 아니라, 해시화된 비밀번호를 받는게 맞습니다.

    또한, `sodium_pwhash_str` 함수는 비밀번호를 해시화하는 함수이므로, 비밀번호가 이미 해시화된 상태에서 다시 해시화하는 것은 의미가 없습니다.

    또한, `sodium_crypto_pwhash_str_verify` 함수는 사용자가 입력한 비밀번호가 일치하는지 확인하는 함수지만, 이 함수는 사용자가 입력한 비밀번호를 받는게 아니라, 해시화된 비밀번호를 받는게 맞습니다.

    오류를 해결하기 위해서는, `sodium_pwhash_str` 함수를 사용하여 비밀번호를 해시화한 후, `sodium_pwhash_str_verify` 함수를 사용하여 사용자가 입력한 비밀번호가 일치하는지 확인하는 코드를 작성해야 합니다.

    #hostingforum.kr
    c
    
    #include 
    
    
    
    int main() {
    
        unsigned char password[32];
    
        unsigned char stored_hash[32];
    
        unsigned char input_password[32];
    
    
    
        // 비밀번호를 입력받고 해시를 생성합니다.
    
        sodium_pwhash_str(stored_hash, 32, "비밀번호", strlen("비밀번호"));
    
    
    
        // 사용자가 입력한 비밀번호를 받습니다.
    
        printf("비밀번호를 입력하세요: ");
    
        fgets(input_password, sizeof(input_password), stdin);
    
        input_password[strlen(input_password) - 1] = ''; // newline character 제거
    
    
    
        // 사용자가 입력한 비밀번호가 일치하는지 확인합니다.
    
        if (sodium_crypto_pwhash_str_verify(stored_hash, input_password, strlen(input_password))) {
    
            printf("비밀번호가 일치합니다.n");
    
        } else {
    
            printf("비밀번호가 일치하지 않습니다.n");
    
        }
    
    
    
        return 0;
    
    }
    
    


    이 코드는 사용자가 입력한 비밀번호가 일치하는지 확인하는 코드입니다. 사용자가 입력한 비밀번호를 받은 후, `sodium_crypto_pwhash_str_verify` 함수를 사용하여 사용자가 입력한 비밀번호가 일치하는지 확인합니다.

    2025-03-10 05:47

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

검색

게시물 검색