R C*_*R C 2 php encryption url hash
正在构建一个 PHP 站点,其 URL 结构如下所示:
http://www.domain.com/list/X/
X 可以是从 1 到 ~50m(我们拥有的记录数)之间的任何整数。
由于站点的性质,内部需要通过增加 URL 来使人们难以自动提取数据,如下所示:
http://www.domain.com/list/1/
http://www.domain.com/list/2/
http://www.domain.com/list/3/
...
http://www.domain.com/list/50000000/
Run Code Online (Sandbox Code Playgroud)
所以我想用X某种随机字符串替换,然后在后台进行内部查找以检索记录整数 ID。
我一开始想做的是建立一个有 50m 行的表,将整数映射到一个随机的 12 字符字符串。
但是为了提高效率,我想到将整数附加到私钥,对其进行加密并使用加密字符串代替X. 然后我只需要解密字符串来检索整数。
任何人都可以推荐一种在 PHP 中执行此操作的方法,即:
1) 快速
2) 产生 URL 友好的字符
3) 结果在一个短字符串
我不关心防水安全(这只是为了阻止业余爱好者)。
谢谢!
不要把它复杂化。您当前的ID是猜测的,修复,通过与替换它们难以猜测的IDS。通过生成真正的随机数,您可以获得不可猜测的 id;不混淆现有的非随机数。UUID非常适合此目的。只需在记录表中添加一个新列来存储这样的 UUID;甚至可以考虑直接用 UUID 替换整数 ID。
PECL 提供了一个uuid 包,但也有其他纯 PHP 实现。
您也可以简单地从openssl_random_pseudo_bytes和bin2hex或base64_encode它生成一个随机值。