2011-12-13 11 views
7

短い文字列をmd5ハッシュに変換したいと思っています。 これは私が見つけた最も単純な例です。私はの#importを追加 Objective-Cの "暗黙的な関数宣言"エラー

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

にC99

に機能CC_MD5のこのエラー

暗黙の宣言は無効であるUPDATE を持っている私はこのようなメソッドを呼び出すときに、それが正常に動作:

[self md5:@"admin"]; 

、私は正しいmd5ハッシュを取得します。私はこの

[self md5:userId]; 

を行うときしかし、私はエラーを取得し、

[NSDecimalNumber UTF8Stringを]:認識されていないセレクタはインスタンス 0x4d3e280 に送られた。しかしuseridは、彼がFacebookのIDが含まれ、小数されていないが、それは宣言していますNSStringのよう

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

答えて

25

CC_MD5の宣言が見られなかったためです。

あなたはMD5関数が定義されただけでなく、セキュリティフレームワークが含まれているクラスの先頭に暗号化ライブラリからCommonDigestヘッダファイルをインクルードする必要があり、セキュリティ、プロジェクトのフレームワークと

#import <CommonCrypto/CommonDigest.h> 
+0

に感謝したように動作しますが、動作しますが少し問題があります – user567

0

あなたはCC_MD5を定義して、右のインターフェイスをインポートしていますか?

#import "CommonDigest.h" 
+0

おそらく ' 'を意味すると思います。 –

+0

まだ動作します。しかし、あなたが完全な場所を与えたいならば、はSOの半分がちょうど –

3

を含めます

#import <CommonCrypto/CommonDigest.h> 
関連する問題