与this question非常相似,我正在计算用于API的字符串的MD5哈希值。
根据this thread on Apple Discussions,这不适用于设备:
CommonCrypto框架不在iPhone上。不幸的是, iPhone模拟器针对Mac OS X框架进行编译,因此它可以继续使用 模拟器......但是你不会为了设备而编译它。
这样的代码仍然会在设备上运行吗?
#import <CommonCrypto/CommonDigest.h>
#define CC_MD5_DIGEST_LENGTH 16 /* digest length in bytes */
- (NSString *)md5:(NSString *)str {
const char *cStr = [str UTF8String];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5(cStr, strlen(cStr), result);
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]];
}
在设备上生成MD5哈希的最新和最佳方法是什么? 如何在XCode 4中添加CommonCrypto / CommonDigtest.h?
谢谢,
答案 0 :(得分:5)
是的,您可以使用CommonCrypto iniOS。我在APpStore中有一个使用CommonCrypto的应用程序。
有关帖子更完整的更多信息:
只需导入标题,例如
#import <CommonCrypto/CommonDigest.h>
#import <CommonCrypto/CommonHMAC.h>
#import <CommonCrypto/CommonCryptor.h>
和框架:Security.framework
以下是使用SHA1和NSData的示例,几乎用MD5替换它:
+ (NSData *)doSha1:(NSData *)dataIn
{
NSMutableData *macOut = [NSMutableData dataWithLength:CC_SHA1_DIGEST_LENGTH];
CC_SHA1( dataIn.bytes,
dataIn.length,
macOut.mutableBytes);
return macOut;
}