iPhone: fast hash function for storing web images (url) as files (hashed filenames)

拟墨画扇 提交于 2019-11-30 14:15:56

问题


What is a fast hash function available for the iPhone to hash web urls (images)?

I'd like to store the cached web image as a file with a hash as the filename, because I suppose the raw web url could contain strange characters that could cause problems on the file system.

The hash function doesn't need to be cryptographic, but it definitely needs to be fast.

Example:

Input: http://www.calumetphoto.com/files/iccprofiles/icc-test-image.jpg

Output: 3573ed9c4d3a5b093355b2d8a1468509

This was done by using MD5(), but since I don't know much about that topic I don't know if it is overkill (-> slow).


回答1:


MD5 may be broken for security purposes, but it works well for the situation you describe. Here's a thread on how to implement it on iPhone. Check out Vroomtrap's post. For posterity, here's my own version of that code:

- (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] ];
}

You'll need to import the CommonCrypto/CommonDigest.h header.




回答2:


I think the NSObject already has a hash function. And NSUrl or NSString can override it, can you try with those things. I think in most of cases, it is fast enough, like we put NSString into NSDictionary:) NSObject hash



来源:https://stackoverflow.com/questions/2934919/iphone-fast-hash-function-for-storing-web-images-url-as-files-hashed-filenam

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!