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

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

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

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

Пример:

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

Выход: 3573ed9c4d3a5b093355b2d8a1468509

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

Ответы [ 2 ]

12 голосов
/ 29 мая 2010

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.

0 голосов
/ 29 мая 2010

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

...