base64_encode / decode无法正常工作

时间:2013-11-21 21:42:23

标签: php base64

我正在尝试使用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 />';

1 个答案:

答案 0 :(得分:0)

我刚刚在我的测试服务器上运行了相同的代码(完全如上) - 我收到了不同的结果:

  

加密:ODUyMDQ1NjQxNTk2MzY0

     

加密:7

哪个看起来是正确的?

您的测试脚本中是否有其他可能干扰的代码?

史蒂夫