我目前使用SHA1算法来缩短网址:
Digest::SHA1.hexdigest("salt-" + url)
像GitHub一样,只使用SHA1的前8个字符作为唯一标识符有多安全?
然而,如果哈希函数的输入必须是有效的URL,那将大大减少可能的输入数。@rsp指出了生日问题,但鉴于此,我不确定它在简单形式下的适用性。此外,它在很大程度上假定没有其他预防措施。
我更想知道你为什么要这样做。这是否涉及用户需要记忆和键入的URL?如果是这样,在URL末尾添加一堆随机的十六进制数字可能不是一个好主意。它是一个URL或URL参数,只是在编程中传递的?那么,我不太关心长度。无论哪种方式,你可能有更好的方法来完成你想要达成的目标。
16^8
(2^32
)种可能性,而是有64^8
(2^48
)种可能性。