我正在尝试使用base64_encode
以不同方式显示ID。我也试图在id中添加一个大数字,这样字符串看起来会更长。
问题是我加密一个数字使它成为一个字符串。然后,当我解密相同的字符串时,我期望相同的值,但在我的情况下,它返回不同的值。
为什么我没有看到相同的值?
这是我的代码:
define('IDS_SALT', 852045641596357);
function simple_encode($id){
$data = '';
$id += IDS_SALT;
$data = base64_encode($id);
$data = str_replace(array('+','/','='),array('-','_','.'),$data);
return $data;
}
function simple_decode($code){
$data = '';
$code = str_replace(array('-','_','.'),array('+','/','='),$code);
$id = base64_decode($code);
$id -= IDS_SALT;
return $id;
}
//this is returning "OC41MjA0NTY0MTU5NjM2RSsxNA.."
echo 'Encrypted: ';
echo simple_encode(7);
echo '<br />';
//this is returning 3 a NOT 7. it should return 7
echo 'Encrypted: ';
echo simple_decode( simple_encode(7) );
echo '<br />';
答案 0 :(得分:0)
我刚刚在我的测试服务器上运行了相同的代码(完全如上) - 我收到了不同的结果:
加密:ODUyMDQ1NjQxNTk2MzY0
加密:7
哪个看起来是正确的?
您的测试脚本中是否有其他可能干扰的代码?
史蒂夫