2011-12-13 151 views
7

我想將短字符串轉換爲md5哈希,我發現有幾篇文章關於它,但沒有人工作。 這是我找到的最簡單的例子。我有這個錯誤「隱式函數聲明」錯誤Objective-C

功能CC_MD5的隱含聲明是無效的C99

- (NSString *) md5:(NSString *) input 
{ 
const char *cStr = [input UTF8String]; 
unsigned char digest[16]; 
CC_MD5(cStr, strlen(cStr), digest); // This is the md5 call 

NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; 

for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) 
[output appendFormat:@"%02x", digest[i]]; 

return output; 
} 

UPDATE 我添加#進口,它的工作很好,當我調用的方法是這樣的:

[self md5:@"admin"]; 

,我得到正確的MD5散列。但是,當我這樣做

[self md5:userId]; 

我得到一個錯誤,

[NSDecimalNumber UTF8字符串]:無法識別的選擇發送到實例 0x4d3e280 但用戶id是不是小數,他包含Facebook的ID,但它的聲明作爲的NSString

NSString *userId; 
@property(retain,nonatomic) NSString *userId; 

回答

25

因爲沒有看到CC_MD5的聲明。

包括在你的項目和安全框架

#import <CommonCrypto/CommonDigest.h> 
0

你輸入正確的接口定義CC_MD5?

#import "CommonDigest.h" 
+0

我想你可能是指`` – 2011-12-13 23:23:56

+0

它仍然有效。但是如果你想給出完整的位置,那麼就像SO的一半提到了 – 2011-12-13 23:26:14

3

您需要包括來自加密庫CommonDigest頭文件在你的類的頂部,其中MD5函數定義,以及包括安全框架

#import <CommonCrypto/CommonDigest.h>