iPhone: быстрая хеш-функция для хранения веб-изображений (URL) как файлы (хешированные имена файлов)

Что быстрая хеш-функция доступна для iPhone для хеширования веб-URL (изображения)?

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

Хеш-функция не должна быть криптографической, но это определенно должно быть быстро.

Пример:

Вход: http://www.calumetphoto.com/files/iccprofiles/icc-test-image.jpg

Вывод: 3573ed9c4d3a5b093355b2d8a1468509

Это было сделано при помощи MD5 (), но так как я не знаю много о той теме, которую я не знаю, является ли это излишество (-> медленный).

5
задан znq 29 May 2010 в 11:59
поделиться

2 ответа

MD5 может быть взломан в целях безопасности, но он хорошо работает в описанной вами ситуации. Вот ветка о том, как реализовать это на iPhone. Прочтите сообщение Vroomtrap. Для потомков вот моя собственная версия этого кода:

- (NSString *)MD5Hash {
    const char *cStr = [self UTF8String];
    unsigned char result[CC_MD5_DIGEST_LENGTH];

    CC_MD5( cStr, strlen(cStr), result );

    return [NSString stringWithFormat: @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
        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] ];
}

Вам нужно будет импортировать заголовок CommonCrypto / CommonDigest.h .

12
ответ дан 13 December 2019 в 05:31
поделиться

Я думаю, что у NSObject уже есть хеш-функция. И NSUrl или NSString могут его переопределить, можете ли вы попробовать с этими вещами. Я думаю, что в большинстве случаев это достаточно быстро, например, мы поместили NSString в NSDictionary :) NSObject hash

0
ответ дан 13 December 2019 в 05:31
поделиться