我正在尝试在 iOS 应用程序中计算 MD5 哈希,以比较应用程序中保存的文件与使用 PHP 存储在 Web 服务器上的相同文件之间的哈希值。
这是 iOS 应用程序的代码:
unsigned char result[CC_MD5_DIGEST_LENGTH];
NSData* data = [NSData dataWithContentsOfFile:@"advert.png"];
const void* src = [data bytes];
CC_MD5(src, [data length], result);
NSString *imageHash = [[NSString stringWithFormat:
@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]]
lowercaseString];
NSLog(@"%@", imageHash);
Web服务器的代码:
$file = 'advert.png';
echo 'MD5 file hash of ' . $file . ': ' . md5_file($file);
该应用程序生成:D41D8CD98F00B204E9800998ECF8427E
PHP 生成:3ef9386b1dd50e8e166efbe48f0f9401
md5sum 生成:3ef9386b1dd50e8e166efbe48f0f9401
更新:
只需通过模拟器运行应用程序,它就会正确计算哈希:3ef9386b1dd50e8e166efbe48f0f9401。
在运行 iOS 5.1 的 iPhone 4 上运行时,计算结果为:ddf017003e063e353a5e4ec2cc4a5095