Посмотрите на CommonCrypto/CommonDigest.h
.
Функция CC_MD5(const void *data, CC_LONG len, unsigned char *md);
вычисляет хеш MD5.
@implementation NSData (MD5)
-(NSString*)md5
{
unsigned char digest[CC_MD5_DIGEST_LENGTH];
CC_MD5([self bytes], [self length], digest);
NSString* s = [NSString stringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
digest[0], digest[1],
digest[2], digest[3],
digest[4], digest[5],
digest[6], digest[7],
digest[8], digest[9],
digest[10], digest[11],
digest[12], digest[13],
digest[14], digest[15]];
return s;
}
@end
В рамках развертывания файлов на сервере вы можете использовать OpenSSL для вычисления хэшей. Команда openssl md5 filename
вычисляет хеш MD5 для файла. Это может быть интегрировано в скрипт.
Затем, после того как ваше приложение загрузило файл, оно вычисляет хэш того, что было загружено, и сравнивает его с хешем, хранящимся на сервере.
Очевидно, что если вы хотите обеспечить целостность файла plist, этот plist не может содержать свой собственный хэш.