我有一个服务器计算图像的哈希值并将图像和哈希值发送到客户端。我让客户端计算它接收到的图像的哈希值。这是基本设置:
服务器
unsigned char sum[MD5_DIGEST_LENGTH];
md5sum(tdata, sum);
w = write(newsockfd,sum,MD5_DIGEST_LENGTH);
客户端
unsigned char ssum[MD5_DIGEST_LENGTH];
w = read(sockfd,ssum,MD5_DIGEST_LENGTH);
unsigned char sum[MD5_DIGEST_LENGTH];
md5sum(imgpath, sum);
int j;
for (j = 0; j < MD5_DIGEST_LENGTH; j++)
printf("%02x", ssum[j]);
printf("\n");
printf("CLIENT CHECKSUM: ", sum);
for (j = 0; j < MD5_DIGEST_LENGTH; j++)
printf("%02x", sum[j]);
printf("\n");
输出结果完全相同,但怎样使用 if 语句来检查它们的相等性呢?如果我这样做:
if (sum == ssum)
它总是被评估为false。
==
进行比较,因为它只比较它们的第一个元素的地址(正如您所见,这是不同的 - 而且它们应该是不同的)。 - Jongware