
sodium_memcmp 함수는 두 개의 메모리 블록을 비교할 때, 메모리 블록의 크기가 동일해야 합니다. 만약 메모리 블록의 크기가 다르다면, 함수는 메모리 블록의 크기 차이만큼의 바이트를 비교합니다.
만약 메모리 블록의 크기가 동일하지만, 내용이 다르다면, sodium_memcmp 함수는 0을 반환하는 것은 아닙니다. 그러나, 메모리 블록의 내용이 다르면, 함수는 0이 아닌 값을 반환합니다.
이러한 문제가 발생하는 이유는 sodium_memcmp 함수가 메모리 블록의 크기가 동일하더라도, 내용이 다르다면, 0이 아닌 값을 반환하기 때문입니다.
이를 해결하는 방법은 메모리 블록의 크기를 확인하고, 크기가 동일한 경우에만 sodium_memcmp 함수를 사용하는 것입니다.
다음은 예제입니다.
#hostingforum.kr
c
#include
#include
int main() {
unsigned char mem1[10] = "Hello";
unsigned char mem2[10] = "World";
unsigned char mem3[10] = "Hello";
if (sodium_memcmp(mem1, mem2, 10) == 0) {
printf("mem1과 mem2는 동일합니다.n");
} else {
printf("mem1과 mem2는 다릅니다.n");
}
if (sodium_memcmp(mem1, mem3, 10) == 0) {
printf("mem1과 mem3는 동일합니다.n");
} else {
printf("mem1과 mem3는 다릅니다.n");
}
return 0;
}
이 예제에서, sodium_memcmp 함수는 메모리 블록의 크기가 동일한 경우에만 0을 반환합니다. 만약 메모리 블록의 크기가 다르다면, 함수는 메모리 블록의 크기 차이만큼의 바이트를 비교합니다.
2025-03-07 16:33