2011-12-14 73 views
0

我用這個代碼來獲取MD5字符串哈希轉換NSDecimalNumber到的NSString

- (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; 
} 

當我做到這一點的工作完美

[self md5:@"mystring"]; 

但是,當我提出這

[self md5:userId]; 

我有錯誤

終止應用程序由於未捕獲的異常 'NSInvalidArgumentException' 的,原因是: ' - [NSDecimalNumber UTF8字符串]: 無法識別的選擇發送到實例0x61a7080'

userID是一個NSString

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

但它contaile facebook用戶名,類似「3309843」 我試過

[self md5:[userId stringValue]]]; 

,我仍然有同樣的錯誤

UPDATE 我想這

[self md5:@"980232376"]; 

,仍然有同樣的錯誤,我認爲這個問題是方法MD5。我無法獲得一串數字的md5?

回答

7

它聽起來像它實際上不是你在那裏的字符串,如果你解析json來得到它,它最有可能是一個NSNumber而不是一個NSString。到目前爲止我嘗試過的所有JSON解析器都將數字轉換爲NSNumber。我認爲,一個快速的測試,看看可能是隻是改變屬性的NSNumber然後:

[self md5:[NSString stringWithFormat:@"%@", userId]]; 
+0

還是不行,我更新我的帖子 – user567 2011-12-14 13:27:38