我在我的应用程序中使用以下函数来处理来自NSString的SHA1哈希:
-(NSString *)stringToSha1:(NSString *)str{
const char *cstr = [str cStringUsingEncoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithBytes:cstr length:str.length];
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(data.bytes, data.length, digest);
NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];
return output;
}
这就像ios 5.0及以上的iphone设备上的魅力一样,但在我的iPad上运行4.3.5版本却崩溃了
CC_SHA1(data.bytes, data.length, digest);
它说:
dyld:懒符号绑定失败:无法解析符号_CC_SHA1 因为无法加载依赖的dylib#3
dyld:无法解析符号_CC_SHA1因为无法加载相关的dylib#3
有关如何在iPad 4.3.5设备上运行的任何想法?
答案 0 :(得分:2)
如果查看头文件,您会看到:
extern unsigned char *CC_SHA1(const void *data, CC_LONG len, unsigned char *md) __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_5_0);
__OSX_AVAILABLE_STARTING(...)
填充意味着此功能仅适用于OS X 10.4+和iOS 5.0+。这就是您的应用程序崩溃的原因。
答案 1 :(得分:1)
我自己找到了解决方案,但我不知道为什么会有效。
从我的项目中删除了框架“libcommonCrypto.dylib”,清理,构建并运行。
在IOS 4.1和4.3上测试过,就像魅力一样。