2011-06-27 7 views
0

私のアプリケーションでは、私はRSSフィードを読んで、それぞれの特定の記事のURLをキーとしてCore Data dbに保存しています。これらのURLをシステムに渡すことは、時間がかかる可能性があるため問題になる可能性があります.dbに格納してそのIDを渡すための一意の識別子を生成する方法が必要です。CocoaのURLからユニークなハッシュやIDを取得するには?

同じ文字列を使って再構成することもできます。重複したURLを取得した場合、識別子を生成してコアデータでその識別子を確認することができます。

これを行う簡単な方法はありますか?

答えて

1

多くの人がハッシュについて話しているとき、一般にSHA1、SHA2、MD5などの一方向ハッシュについて考えています。これらはすぐに役立ちますが、ハッシュを元の形に戻すことはできません。ただし、になりますが、実際にパスワードを保存することなく、ユーザーが入力したパスワードと以前入力したパスワードを比較することができます。ハッシュのみです。

文字列圧縮またはデフレーションが必要なようです。幸いにも、gzipは、ASIHTTPRequestクラスを使用して、すぐにサポートされています。 this discussionにあるgzipを使用するためのコードがいくつかあります。ここではMD5を使用してハッシュ化について説明し、非常に良い記事があり

NSString *encodedGzippedString = @"GgAAAB+LCAAAAAAABADtvQdgHEmWJSYvbcp7f0r1StfgdKEIgGATJNiQQBDswYjN5pLsHWlHIymrKoHKZVZlXWYWQMztnbz33nvvvffee++997o7nU4n99//P1xmZAFs9s5K2smeIYCqyB8/fnwfPyK+uE6X2SJPiyZ93eaX+TI9Lcuiatvx/wOwYc0HGgAAAA=="; 
NSData *decodedGzippedData = [NSData dataFromBase64String:encodedGzippedString]; 
NSData* unGzippedJsonData = [ASIHTTPRequest uncompressZippedData:decodedGzippedData]; 
NSString* unGzippedJsonString = [[NSString alloc] initWithData:unGzippedJsonData encoding:NSASCIIStringEncoding];  
NSLog(@"Result: %@", unGzippedJsonString); 

http://cocoawithlove.com/2009/07/hashvalue-object-for-holding-md5-and.html

をCommonCryptoライブラリを使用するには、既に構築されたハッシュアルゴリズムがいくつかありますあなたが好きなMD5のhasingアルゴリズムを使用することができます。この:

#import <CommonCrypto/CommonDigest.h> 

char input[] = "Some data value."; 
char result[16]; 
CC_MD5(input, strlen(input), result); 

この人間が読める進形式でハッシュを出力します:

printf("MD5 (\"%s\") = %02x%02x%02x%02x%02x%02x 
         %02x%02x%02x%02x%02x%02x 
         %02x%02x%02x%02x\n", 
    input, 
    result[0], result[1], result[2], result[3], 
    result[4], result[5], result[6], result[7], 
    result[8], result[9], result[10], result[11], 
    result[12], result[13], result[14], result[15]); 

転送専用ハッシュについて詳しくは、this SO answerに情報とプロダクション対応のコードを掲載しました。

0

SHA1(apple implementation of it on iOS)を使用すると、すべての要件を満たします(同じ入力で再実行すると同じ出力が生成され、入力の1文字を変更すると出力が大幅に変更されます)。

関連する問題