我使用MD5算法为同一个图像创建唯一的字符串/名称。所以我使用模拟器和ipad进行了测试。
我使用safari在Simulator中下载了一个图像并为它创建了MD5字符串。它在simulator.in模拟器中正常工作,它总是为同一个图像创建相同的字符串。
然后我通过safari将相同的图像从同一个站点/网址下载到ipad。并为此创建了一个MD5。有一个问题。两个MD5是不同的。任何人都告诉我确切的问题。是模拟器和ipad在下载时保存不同大小的相同图像。
我使用了代码:MyExtensions.h
@interface NSData (MyExtensions)
- (NSString*)md5;
@end
MyExtensions.m
#import "MyExtensions.h"
#import <CommonCrypto/CommonDigest.h> // Need to import for CC_MD5 access
@implementation NSData (MyExtensions)
- (NSString*)md5
{
unsigned char result[16];
CC_MD5( self.bytes, self.length, result ); // This is the md5 call
return [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]
];
}
@end
-(NSString *) md5Image:(UIImage *)img {
return [UIImagePNGRepresentation(img) md5];
}
答案 0 :(得分:1)
检查answer to this post以获取可能的解释。
如您所见,CC_MD5实现可以包含一些在32位或64位OS上占用不同字节数的数据类型。这可以解释您在模拟器(Mac OSX)或设备(iOS)上进行散列时所看到的差异。