2011-01-29 14 views
2

文字列からSHA1ハッシュを計算し、別の文字列に戻すのに問題があります。私がしていることは次のとおりです。NSStringのSHA1ハッシュを使ってNSDataをキャプチャするには?

unsigned char hashedChars[20]; 
CC_SHA1([hashElements UTF8String], [hashElements lengthOfBytesUsingEncoding:NSUTF8StringEncoding], hashedChars); 
NSData *hashedData = [NSData dataWithBytes:hashedChars length:20]; 
NSString *hash = [[NSString alloc] initWithData:hashedData encoding:NSUTF8StringEncoding]; 
NSLog(@"%s", hash); 

ログの結果は(null)です。私は基本的にいくつかの文字列を組み合わせて文字列を作成し、次にNSDataオブジェクトに格納されているハッシュを計算してから取り出し、ハッシュ文字列に戻します。私がhashedDataを記録すると、明らかに結果が出てくるのがわかります。これは正しいと思われます。それは4行目で何かが間違っていることを示しているはずです。しかし何?どんな助けでも大歓迎です。

種類について、

Reinder

答えて

3

SHA-1は、20バイトのバイナリチャンクではなく、有効なUTF-8文字列です。これがNSStringのinitWithData:encoding:が失敗する理由です。ハッシュ合計の表現に一般的に使用されるのは、16進数の文字列です。基本的には、必要なのは[hashedData description]です。

+0

素晴らしいです。ありがとう! –

関連する問題