Что быстрая хеш-функция доступна для iPhone для хеширования веб-URL (изображения)?
Я хотел бы сохранить кэшируемое веб-изображение как файл с хешем как имя файла, потому что я предполагаю, что необработанный веб-URL мог содержать странные символы, которые могли вызвать проблемы в файловой системе.
Хеш-функция не должна быть криптографической, но это определенно должно быть быстро.
Пример:
Вход: http://www.calumetphoto.com/files/iccprofiles/icc-test-image.jpg
Вывод: 3573ed9c4d3a5b093355b2d8a1468509
Это было сделано при помощи MD5 (), но так как я не знаю много о той теме, которую я не знаю, является ли это излишество (-> медленный).
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
.
Я думаю, что у NSObject уже есть хеш-функция. И NSUrl или NSString могут его переопределить, можете ли вы попробовать с этими вещами. Я думаю, что в большинстве случаев это достаточно быстро, например, мы поместили NSString в NSDictionary :) NSObject hash