2012-09-25 70 views
0

不起作用以下工作就好了iOS5的基類,但失敗(SIGABRT)與iOS6的。它可能是一個操作系統的東西或架構的東西?工作SHA1代碼的iOS5在iOS6的

重要的是還要注意的是伴隨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

它怎麼會失敗呢? –

+0

哇,我怎麼錯過了?上述編輯(SIGABRT) – sbonami

回答

2

你可能都拿到 「幸運」 在iOS 5,SHA-1摘要是20個字節,而不是16:

unsigned char digest[16]; 
+0

我的運氣已經用完了的話,不知道該如何管理這麼久的工作。你首先正確回答,所以我會獎勵你接受,謝謝! – sbonami

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指針。

+0

你是對的,但邁克第一回答,謝謝你的徹底答案! – sbonami

相關問題