4
CRC-32는 메시지 끝에 CRC를 추가하면 전체 내용의 CRC를 계산하여 메시지 확인을 수행 할 수 있다는 놀라운 속성을 가지고 있습니다. 체크섬이 통과하면 최종 결과는 0이됩니다.메시지 + Adler의 Adler32는 (CRC32와 마찬가지로) 0이됩니다.
이 속성은 CRC-32 형제 인 Adler32?
짧은 대답은 "아니오"인 것처럼 보이지만 나는 단지 내가 뭔가를 놓치고 있지 않은지 확인하려고했습니다.
여기에 예를 들어 메시지를 사용하여, http://en.wikipedia.org/wiki/Adler-32, 나는 ZLIB 구현
#include <zlib.h>
#include <stdio.h>
#include <string.h>
void print_sum(const char * str)
{
uLong asum = 0;
asum = adler32(0, Z_NULL, 0);
asum = adler32(asum, str, strlen(str));
printf("%x\n", asum);
}
int main (int argc, char** argv)
{
const char * msg1 = "Wikipedia";
const char * msg2 = "Wikipedia\x98\x03\xe6\x11";
const char * msg3 = "Wikipedia\x11\xe6\x03\x98";
print_sum(msg1);
print_sum(msg2);
print_sum(msg3);
}
를 사용하여 아래의 테스트 프로그램을 작성 그리고 이러한 결과입니다 : 당신이 발견으로
11e60398
248c052a
23da052a
그래서 대답은 알고리즘을 설계 한 사람에게서 직접 나온 것보다 더 좋아지지 않습니다. 감사! –