多くの人がハッシュについて話しているとき、一般に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に情報とプロダクション対応のコードを掲載しました。