我正在尝试通过在 iOS 中使用它们的散列值重命名它们来创建唯一的文件名。我该怎么做?
最佳答案
你可以通过扩展 NSString 来实现, 在你的 .h 中试试这个:
@interface NSString(MD5)
- (NSString *)generateMD5Hash
@end
这在你的 .m 中
- (NSString*)generateMD5Hash
{
const char *string = [self UTF8String];
unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];
CC_MD5(string, strlen(string), 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;
}
你可以通过创建一个名为 NSString+MD5 的新类,并将上面的代码插入相应的文件(.h 和 .m)中来实现这一点
编辑:不要忘记导入
< CommonCrypto/CommonDigest.h >
编辑 2:
对于 NSData;
@interface NSData(MD5)
- (NSString *)generateMD5Hash;
@end
你的.m:
- (NSString *)generateMD5Hash
{
unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];
CC_MD5(self.bytes, (CC_LONG)self.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;
}
请注意,返回的值是自动释放的,可能需要由接收方保留。
希望这对您有所帮助。
关于iphone - 如何在 iOS 上创建文件的哈希值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7632145/