1

就像在 php 中我们使用 $_GET 在 url 中传递变量一样,我想传递包括我想要匿名的用户 id 的变量,所以可以做一些事情来在传递变量和变量之前加密变量一旦取到页面上,就可以解密得到原始变量值。

例如:

在传递变量之前 $id=10;

以 $id=dasfgjg 的形式传入 url;

从 url 获取并解密 $id=10;

如何做到这一点?

4

3 回答 3

2

如果您打算仅在服务器端加密/解密,则可以使用 RC4 密码

http://www.phpkode.com/source/s/rc4-cipher-0-1/rc4-cipher-0-1/RC4.php

$my_secret_key = '3klmsd94mms.saeo44o!!3le';

if( isset($_GET['p']) ) {
  $id = RC4::decrypt($my_secret_key, $_GET['p']);
  // ....
}
else {
  echo '<a href="/?p='.RC4::encrypt($my_secret_key, 12).'">Go to the page</a>';
}
于 2012-05-04T11:17:33.500 回答
1

只需为数据库中的每条记录生成随机字符串(确保它是唯一的)并将其保存在那里。然后将其用作标识符。请注意,当然,这与加密无关。

于 2012-05-04T11:02:33.310 回答
0

一种快速而肮脏的方式来实现这一点(对于每个请求)

  • 在客户端上,创建一个类似于 'xx:10:yy' 的字符串,其中 xx 和 yy 是由 pf 随机字符组成的字符串
  • 在客户端上,创建用户加盐/散列密码的加盐散列
  • 将此哈希用作密钥,将第一个项目符号中的字符串用作明文以使用例如 crypt.js 进行加密
  • 在请求中发送加密字符串和盐
  • 在服务器上使用传输的盐和用户加盐/哈希密码来恢复密钥
  • 在服务器上使用 mcrypt 或朋友来解密字符串
  • 在服务器上使用标准 PHP 文本处理函数从解密的字符串中恢复有效负载
于 2012-05-04T11:08:38.137 回答