将整数ID转换为带有随机字符的字符串,反之亦然

时间:2014-06-24 14:57:41

标签: php string algorithm

我有一些内容的ID,我有一个带有GET参数的网址:id=202(其中202是用户想要观看的内容的ID)。我想避免这种情况,并将ID转换为带有随机字符和数字的字符串,例如YouTube(例如:watch?v=QEllLECo4OM),然后再将其转换为整数,以便我可以获取内容。

我考虑过使用包含每个ID和字符串的表,每当用户上传新内容时,我会生成一个随机字符串并在该表中检查以避免重复。

这是唯一的方法吗?或者有更好的算法吗?

感谢。

3 个答案:

答案 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和随机字符串的表格更安全。为什么呢?

  1. 没有计算来反转ID
  2. 外界没有人可以猜测或重新计算ID
  3. 没有人知道您在数据库中已有多少条目作为随机字符串
  4. 如果您希望选择较短的号码,可以选择

    P.S。为了使自定义转换器更安全,你可以不同地重新排序Base62数组(0-9,a-z,A-Z)中的数字和字符,这样就不会明显哪个字符得到哪个数字