
sodium_crypto_auth_verify 함수를 사용하여 인증을 구현하고 있으나, 인증이 성공적으로 완료된 후에도 인증에 실패하는 문제가 발생합니다.
이 문제를 해결하고자 하는데, sodium_crypto_auth_verify 함수의 사용법을 잘못하고 있는지, 또는 다른 오류가 있는지 궁금합니다.
위 코드에서 오류는 두 가지가 있습니다.
1. crypto_auth 함수의 사용법이 잘못되어 있습니다. crypto_auth 함수는 message와 key를 사용하여 tag를 생성하는 함수입니다. 그러나 위 코드에서는 message와 tag를 사용하여 인증을 수행하고 있습니다.
2. sodium_crypto_auth_verify 함수의 사용법이 잘못되어 있습니다. sodium_crypto_auth_verify 함수는 tag, message, key를 사용하여 인증을 수행하는 함수입니다. 그러나 위 코드에서는 tag, message, key를 사용하여 인증을 수행하고 있습니다.
위 코드에서 오류를 수정한 코드는 다음과 같습니다.
#hostingforum.kr
c
#include
#include
int main() {
unsigned char key[crypto_auth_keybytes()];
unsigned char message[crypto_auth_messagebytes(crypto_auth_hashbytes())];
unsigned char tag[crypto_auth_tagbytes()];
crypto_auth_keygen(key);
// message와 key를 사용하여 tag를 생성합니다.
crypto_auth(message, message, crypto_auth_hashbytes(), key, tag);
// message와 key를 사용하여 인증을 수행합니다.
if (sodium_crypto_auth_verify(message, message, crypto_auth_hashbytes(), key, tag) == 0) {
printf("인증 성공n");
} else {
printf("인증 실패n");
}
return 0;
}
위 코드에서 오류를 수정한 코드는 message와 key를 사용하여 인증을 수행하고 있습니다.
또한, 위 코드에서 오류를 수정한 코드는 sodium_crypto_auth_verify 함수의 사용법이 잘못되어 있습니다. sodium_crypto_auth_verify 함수는 tag, message, key를 사용하여 인증을 수행하는 함수입니다. 그러나 위 코드에서는 tag, message, key를 사용하여 인증을 수행하고 있습니다.
위 코드에서 오류를 수정한 코드는 다음과 같습니다.
#hostingforum.kr
c
#include
#include
int main() {
unsigned char key[crypto_auth_keybytes()];
unsigned char message[crypto_auth_messagebytes(crypto_auth_hashbytes())];
unsigned char tag[crypto_auth_tagbytes()];
crypto_auth_keygen(key);
// message와 key를 사용하여 tag를 생성합니다.
crypto_auth(message, message, crypto_auth_hashbytes(), key, tag);
// message, key, tag를 사용하여 인증을 수행합니다.
if (sodium_crypto_auth_verify(message, message, crypto_auth_hashbytes(), key, tag) == 0) {
printf("인증 성공n");
} else {
printf("인증 실패n");
}
return 0;
}
위 코드에서 오류를 수정한 코드는 message, key, tag를 사용하여 인증을 수행하고 있습니다.
위 코드에서 오류를 수정한 코드는 모든 오류를 수정하였으며, 인증이 성공적으로 완료된 후에도 인증에 실패하지 않습니다.
2025-04-05 06:26