以下在iOS5作为基类时运行良好,但在iOS6运行失败(SIGABRT)。它可能是OS的东西还是架构的东西?
重要的是要注意随附的MD5哈希确实有效。
-(NSString *)SHA1Hash {
const char *cStr = [self UTF8String];
unsigned char digest[16];
CC_SHA1( cStr, strlen(cStr), digest ); // This is the sha1 call
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;
}
感谢您的帮助!
答案 0 :(得分:2)
你可能在iOS 5上获得“幸运”.SHA-1摘要是20个字节,而不是16:
unsigned char digest[16];
答案 1 :(得分:2)
使用宏CC_SHA1_DIGEST_LENGTH
来声明您的摘要长度。 16太短,所以你正在捣乱堆栈。
unsigned char digest[CC_SHA1_DIGEST_LENGTH];
来自CC_SHA1
CC_SHA1()计算数据和len字节的SHA-1消息摘要 将它放在md中(必须有空间用于CC_SHA1_DIGEST_LENGTH == 20 输出的字节数)。它返回md指针。