如何在php中加密$ _GET数据?

时间:2012-05-04 11:00:47

标签: php variables encryption get

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

例如:

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

作为$ id = dasfgjg;

传递到网址中

从网址中取出并解密$ id = 10;

如何实现这一目标?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

如果您只想在服务器端加密/解密,可以使用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>';
}

答案 2 :(得分:0)

实现此目的的快速而肮脏的方式(针对每个请求)

  • 在客户端上,创建一个类似'xx:10:yy'的字符串,其中xx和yy是包含pf random characetrs的字符串
  • 在客户端上,创建用户salted / hashed密码的盐渍哈希
  • 使用此哈希作为密钥,将第一个项目符号中的字符串用作加密的明文,例如crypt.js
  • 在请求中发送加密字符串和salt
  • 服务器上的
  • 使用transmited salt和用户salted / hashed密码来恢复密钥
  • 服务器上的
  • 使用mcrypt或朋友来解密字符串
  • 服务器上的
  • 使用标准的PHP文本处理函数从解密的字符串中恢复有效负载