我想做类似于YouTube的事情。例如,这是有效的YouTube视频ID didzxUkrtS0
现在我用一个整数来存储用户ID,我想将这些数字翻译成8个字符的字母数字标识。例如:FZ3EY1IC
(不是十六进制)
我已经知道我可以用MD5实现它,然后取前8个十六进制数字,但它不包括整个字母。
我应该怎样做才能使用整数来创建一个独特的模式,这种模式永远不会重复?
答案 0 :(得分:0)
我很确定像youtube和bitly这样的网站是在数据库中存储一个大表,它将每个链接的字母数字标识符转换为它们所用内部ID(或者存储在行中) )。当它需要一个新的标识符时,计算一个随机的标识符并存储它。您需要执行此操作的原因是攻击者无法预测要添加的下一条内容的ID。
答案 1 :(得分:0)
将整数5个8位字节设为长(如果整数为32位,则添加一个带随机值的字节),这是40位数据。
使用某个密钥对您的整数的5个字节进行密码加密,您可能希望保密。
将40个加密位分成8个5位部分。使用32个字母数字字符对每个部件进行编码。您可以选择为每个部分使用不同的32个(总共36个)字符。
反向操作很简单。