我試圖用base64_encode
以不同的方式顯示id。我也試圖給id添加一個大數字,這樣字符串看起來會更長。base64_encode/decode無法正常工作
問題是我加密一個數字使其成爲一個字符串。然後當我解密相同的字符串我期望相同的值,但在我的情況下,它返回不同的值。
爲什麼我看不到相同的值?
這是我的代碼:
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 />';
你的鹽整數道外爲一個32位的PHP安裝,這在2,147,483,647簽署32位INT馬克塞斯支持的範圍。做一個'echo IDS_SALT'來看看真正儲存在裏面的東西。 –
我沒有echo number_format(IDS_SALT,0,'','');並顯示相同的號碼,我存儲在IDS_SALT – Jaylen
馬克B是現貨 - 只是交換到一個32位機和鹽沒有按規定存儲。 – steve