我有一个文件
testfile
和一个字符串teststring
。我在一个 shell 中写道:
echo "a" > testfile
然后
xxd testfile
我可以看到我的文件内容
输出的十六进制值:0000000: 610a a.
看我的代码:
int file; struct stat s; unsigned long size; char* buffer; char md5[MD5_DIGEST_LENGTH] file = open("testfile", O_RDONLY); if (file < 0) return false; if (fstat(file, &s) < 0) { close(file); return false; } size = s.st_size; //GET FILE SIZE printf("filesize: %lu\n", size); //PRINT FILESIZE FOR DEBUGGING buffer = (char*)mmap(0, size, PROT_READ, MAP_SHARED, file, 0); //MAP FILE CONTENT TO BUFFER MD5((unsigned char*)buffer, size, md5); //GENERATE MD5 munmap(buffer, size); //UNMAP BUFFER close(file); for (int i = 0; i < MD5_DIGEST_LENGTH; i++) printf("%02x", md5[i]); printf("\n"); unsigned char* teststring = "\x61\x0a"; //SAME STRING AS IN THE FILE MD5((unsigned char*)teststring, 2, md5); for (int i = 0; i < MD5_DIGEST_LENGTH; i++) printf("%02x", md5[i]); printf("\n");
它打印:
filesize: 2 60b725f10c9c85c70d97880dfe8191b3 e29311f6f1bf1af907f9ef9f44b8328b
两个完全不同的md5 哈希。
我尝试将它们写入buffer
文件
并将它们写入teststring
文件它们是相同的!
凭什么?
不buffer
一样teststring
吗?
问问题
1819 次