Когда большинство людей говорят о хешах, они обычно думают об односторонних хешах, таких как SHA1, SHA2 или MD5. Хотя они очень полезны, они не позволят вам взять хеш и обратить его в первоначальный вид. Они будут , однако позволяют вам делать такие вещи, как сравнение введенного пользователем пароля с тем, который они вводили ранее, без необходимости сохранять действительный пароль - только хеш.
То, что вам нужно, это сжатие или дефляция строк. К счастью, gzip поддерживается из коробки, используя класс ASIHTTPRequest
. Вот некоторый код для использования gzip, найденный в этом обсуждении .
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);
Здесь есть очень хорошая статья, в которой обсуждается хеширование с использованием MD5:
http://cocoawithlove.com/2009/07/hashvalue-object-for-holding-md5-and.html
Используя библиотеку CommonCrypto, уже встроено несколько алгоритмов хэширования. Вы можете использовать алгоритм хэширования MD5, например:
#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]);
Если вы хотите получить больше информации о хешировании только для пересылки, я разместил некоторую информацию, а также готовый код в этом SO-ответе .