唯一ID的自定义哈希

时间:2013-04-16 04:33:52

标签: algorithm hash uniqueidentifier unique-id

我想做类似于YouTube的事情。例如,这是有效的YouTube视频ID didzxUkrtS0

现在我用一个整数来存储用户ID,我想将这些数字翻译成8个字符的字母数字标识。例如:FZ3EY1IC(不是十六进制)

我已经知道我可以用MD5实现它,然后取前8个十六进制数字,但它不包括整个字母。

我应该怎样做才能使用整数来创建一个独特的模式,这种模式永远不会重复?

2 个答案:

答案 0 :(得分:0)

我很确定像youtube和bitly这样的网站是在数据库中存储一个大表,它将每个链接的字母数字标识符转换为它们所用内部ID(或者存储在行中) )。当它需要一个新的标识符时,计算一个随机的标识符并存储它。您需要执行此操作的原因是攻击者无法预测要添加的下一条内容的ID。

答案 1 :(得分:0)

将整数5个8位字节设为长(如果整数为32位,则添加一个带随机值的字节),这是40位数据。

使用某个密钥对您的整数的5个字节进行密码加密,您可能希望保密。

将40个加密位分成8个5位部分。使用32个字母数字字符对每个部件进行编码。您可以选择为每个部分使用不同的32个(总共36个)字符。

反向操作很简单。