iPhone:ios 4.3上的SHA1哈希

iPhone:ios 4.3上的SHA1哈希,iphone,hash,sha1,Iphone,Hash,Sha1,在我的应用程序中,我正在使用以下函数来处理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_DI

在我的应用程序中,我正在使用以下函数来处理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;

}
它说:

dyld:惰性符号绑定失败:无法解析中的符号\u CC\u SHA1 因为无法加载依赖的动态库#3

dyld:无法解析中的符号_cc35; u SHA1,因为无法加载依赖的dylib#3


关于如何让它在我的iPad4.3.5设备上工作,有什么想法吗

如果查看头文件,您将看到:

extern unsigned char *CC_SHA1(const void *data, CC_LONG len, unsigned char *md) __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_5_0);

\uuuuuuOSX\uAvailable\u启动(…)
意味着此功能仅在OS X 10.4+和iOS 5.0+上可用。这就是你的应用程序崩溃的原因。

我自己找到了解决方案,但我不知道它为什么会工作

从我的项目clean和build中删除了框架“libcommonCrypto.dylib”,它就工作了


在IOS 4.1和4.3上测试,效果非常好。

是的,我见过。另一方面,有几个地方他们说它应该适用于4.3 nontheless,所以这很奇怪:\参见这里的一个例子:如果这是一个解决方案,那么继续并将其标记为答案,即使它是您自己的。
extern unsigned char *CC_SHA1(const void *data, CC_LONG len, unsigned char *md) __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_5_0);