
오류는 `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