我创建了一个与我的bundle一起部署的文件的MD5,以决定是否需要导入它。 我的问题是,当我创建MD5时总是与众不同。即使我在具有相同数据的循环中调用MD5方法10次,我也得到了不同的结果。
这是我的MD%方法:
- (NSString*)hashForData:(NSData*)data
{
unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];
CC_MD5((__bridge const void*)(data), (CC_LONG)data.length, md5Buffer);
NSMutableString* output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", md5Buffer[i]];
return output;
}
- (NSData*)data
{
if (!_data) {
_data = [NSData dataWithContentsOfFile:_path];
}
return _data;
}
知道可能出现什么问题吗?
答案 0 :(得分:2)
不应该是:
CC_MD5((__bridge const void*)([data bytes]), (CC_LONG)[data length], md5Buffer);
// ^^^^^^^^^^^^ ^^^^^^^^^^^^^
(即,您正在计算NSData
对象(和相邻内存)的MD5哈希值,而不是 NSData
对象中的数据。