iphone - 如何在 iOS 上创建文件的哈希值?

标签 iphone ios hash md5 sha256

我正在尝试通过在 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/

相关文章:

perl - 在 Perl 中使用切片初始化一组哈希键

algorithm - 运行时分析中的概率?

iphone - 在 iPhone 中,在哪里保存从 iOS 应用程序下载的文件

iphone - 在 iOS 应用程序包文件中进行全文搜索

iphone - UITextField 中的白色文本 = iPhone 复制/粘贴选择中的不可见文本。使固定?

javascript - AngularJS 向 iOS WKWebView 发送消息

iOS:检查 coredata 对象是否仍然存在?

ios - 如何使用 AudioServicesRemoveSystemSoundCompletion 回调

java - 检查字符串是否已使用 BCrypt 进行哈希处理

ios - 更新到 Xcode 5 后无法将应用安装到设备