使用PHP轻松加密和解密

nor*_*ld2 8 php encryption

我的PHP应用程序使用以下URL:

http://domain.com/userid/120
http://domain.com/userid/121
Run Code Online (Sandbox Code Playgroud)

密钥和URL的结尾基本上是MySQL数据库表的主键.

我不希望这个增加的数字是公开的,我也不希望有人只能通过交互ID来抓取用户配置文件.

因此,我希望以一种我可以轻松解密的方式加密此Id以进行显示.字符串不应该长得多.

什么是最好的加密方法?

sha*_*mar 7

简单模糊: Base64使用它们编码base64_encode.
现在,您的http://domain.com/userid/121成为:http://domain.com/userid/MTIx
想要更多,再做一次,在它周围添加一些字母.

严格模糊:使用MCrypt库的任何加密方法.


Joh*_*ker 6

更好的方法(从可用性和SEO的角度来看)将使用一个独特的短语而不是一个模糊的ID.在这种情况下,用户的用户名似乎是一个理想的解决方案,也是不可猜测的.

也就是说,如果您不想使用这种方法,您可以使用用户的用户名的哈希值(可能是md5),并将其存储在数据库中以及其他详细信息.因此,您可以直接在该字段上进行查找.(即:加密和解密部分URL可能有点过分.)


jwu*_*ler 0

隐藏 URL 永远无法保证其安全。它使阅读变得更加困难,但操作起来并不困难。您可以使用十六进制数字表示或类似的东西来模糊它。无论如何,那些能读十六进制的人可以在几秒钟内更改您的 URL:

$hexId = dechex($id); // to hex
$id = hexdec($hexId); // from hex
Run Code Online (Sandbox Code Playgroud)