我有一些内容的ID,我有一个带有GET参数的网址:id=202
(其中202
是用户想要观看的内容的ID)。我想避免这种情况,并将ID转换为带有随机字符和数字的字符串,例如YouTube(例如:watch?v=QEllLECo4OM
),然后再将其转换为整数,以便我可以获取内容。
我考虑过使用包含每个ID和字符串的表,每当用户上传新内容时,我会生成一个随机字符串并在该表中检查以避免重复。
这是唯一的方法吗?或者有更好的算法吗?
感谢。
答案 0 :(得分:0)
你可以使用php函数作为base64_encode(202 => MjAy)然后使用base64_decode(MjAy => 202)。但如果这是你的意图,这只是有点混淆而不是“秘密”。
答案 1 :(得分:0)
这个任务完全有一个库:hashids。
它不是安全库,而是模糊数据库中的数字ID。
示例:
$hashids = new Hashids();
$id = $hashids->encode(1, 2, 3); // o2fXhV
$numbers = $hashids->decode($id); // [1, 2, 3]
答案 2 :(得分:-1)
具有ID和随机字符串的表格更安全。为什么呢?
如果您希望选择较短的号码,可以选择
P.S。为了使自定义转换器更安全,你可以不同地重新排序Base62数组(0-9,a-z,A-Z)中的数字和字符,这样就不会明显哪个字符得到哪个数字