对于我正在处理的应用程序,我有一个类来处理发送到Web服务的请求。为了减少流量负载,我想缓存大部分请求及其结果(至少对于不会经常更改的内容)。请求由使用的URL唯一标识,因此我想将URL用作密钥。
在我之前的一个项目中,我曾经创建了一个URL的md5哈希作为一个键。我开始想知道这种方法有多安全,因为显然有两个不同的URL产生相同的散列值。
任何人都可以建议更安全的方法,还是应该坚持使用URL的md5哈希作为缓存字典中的密钥?
答案 0 :(得分:2)
只需使用NSMutableDictionary
,将URL(作为NSString
s)用于字典键。 NSDictionary
(和NSMutableDictionary
)几乎肯定会在内部使用某种哈希表实现,但它们会处理任何哈希重复问题。如果你给它一个唯一的密钥,它将正确存储它。
除非您确定NSMutableDictionary
对于您的需求太慢(几乎肯定不会),否则您不必担心散列,碰撞或类似的事情。只需使用唯一键(URL)将数据粘贴到字典中。
答案 1 :(得分:0)
首先,我建议查看URL加载系统编程指南的Understanding Cache Access章节。
如果这还不够,我会坚持使用md5作为关键。我认为您不会将您的应用程序的任何漏洞暴露给潜在的攻击者。怎么可能有害?