Хорошая стратегия гарантировать целостность файла

У меня есть некоторый код, который загружает plist с веб-сервера и хранит его в каталоге документов телефона. Мое беспокойство - то, что, если файл становится поврежденным затем, он произведет устойчивость и пользовательский опыт приложения.

Я кодирую оборонительно в частях чтения данных приложения, но задался вопросом, что совет там для проверки целостности файла во-первых, прежде чем старый будет по записанному. Я думаю о реализации своего рода вычисленного значения, которое также хранится в как ключ в plist, например.

Любые мысли о создании этого максимально устойчивого значительно ценились бы.

С уважением

Dave

6
задан Gregory Pakosz 12 January 2010 в 14:40
поделиться

1 ответ

Посмотрите на 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 имя файла вычисляет MD5 хэш для файла. Это может быть интегрировано в скрипт.

Затем после загрузки файла ваше приложение вычисляет хэш того, что было загружено, и сравнивает его с хэшем, хранящимся на сервере.

Очевидно, что если вы хотите обеспечить целостность файла сводки, эта сводка не может содержать свой собственный хэш.

5
ответ дан 17 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: