Php base64_编码/解码工作不正常
我试图使用Php base64_编码/解码工作不正常,php,base64,Php,Base64,我试图使用base64\u encode以不同的方式显示ID。我还试图在id中添加一个大的数字,这样字符串看起来就会更长 问题是我加密了一个数字,使之成为一个字符串。然后,当我解密相同的字符串时,我期望相同的值,但在我的情况下,它返回不同的值 为什么我看不到相同的价值观 这是我的代码: define('IDS_SALT', 852045641596357); function simple_encode($id){ $data = ''; $id += IDS_SALT;
base64\u 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 />';
define('IDS_SALT',852045641596357);
函数简单编码($id){
$data='';
$id+=id_盐;
$data=base64_编码($id);
$data=str_replace(数组(“+”、“/”、“=”)、数组(“-”、“"、”)、$data);
返回$data;
}
函数简单解码($code){
$data='';
$code=str_replace(数组('-',''''','.')、数组('+','/','=')、$code);
$id=base64_解码($code);
$id-=id_盐;
返回$id;
}
//这是返回“OC41MjA0NTY0MTU5NjM2RSsxNA..”
echo“加密:”;
回波简单编码(7);
回声“
”;
//这是返回3 a而不是7 a。它应该返回7
echo“加密:”;
回波简单解码(简单编码(7));
回声“
”;
我刚刚在我的测试服务器上运行了相同的代码(与上面完全相同)-我收到了不同的结果:
加密:ODUyMDQ1NjQxNTk2MzY0
加密:7
哪个看起来是正确的
您的测试脚本中是否有其他可能会干扰的代码
Steve您的salt整数远远超出了32位PHP安装支持的范围,其最大值为带符号的32位整数2147483647。做一个
echo-IDS\u-SALT
来看看里面到底存储了什么。我做了echo-number\u格式(IDS\u-SALT,0,,,,”);它显示了我存储在IDS_SALTMarc B中的同一个数字,只是换成了一台32位的机器,而salt并没有按照规定存储。我的服务器是64位的,这是否意味着我的php是32位的,而我的服务器是64位的?如何检查我的php位大小?请看:-将告诉您如何检查位大小…感谢Steve,我不确定我们是否运行了不同的php版本,使其具有不同的性能。当我运行上面的代码时,我看到以下加密代码:OC41MjA0NTY0MTU5NjM2RSsxNA。。加密:3可能-我正在运行PHP5.3这一结束。