PHP md5 相同數據字符串與數字不一致問題


作為PHP常用的加密方法MD5 在加密相同字符的數字與數字字符串是出現的不一致問題

  

echo 'int   :'.md5 (1046191101562142034).PHP_EOL;
echo 'string:'.md5 ('1046191101562142034').PHP_EOL;

//結果

int   :87ab7e2de7b9732e606ed81c4b0c9606
string:87ab7e2de7b9732e606ed81c4b0c9606

  

此時結果還是一致的

但是當我們的數字多增加一位時 就會出現結果不一致的現象

echo 'int   :'.md5 (10461911015621420340).PHP_EOL;
echo 'string:'.md5 ('10461911015621420340').PHP_EOL;

//結果

int   :386dea57fc50309fdec13307d6cc47da
string:79cb1355eaede60858cb31dc40e60b53

  

出現這個原因是因為PHP_INT_MAX的值為 9223372036854775807

當出現數字大於這個值時 PHP本身就會做溢出處理

echo 'ori int: 10461911015621420340'.PHP_EOL;
echo 'int int:'.intval (10461911015621420340).PHP_EOL;

//結果

ori int: 10461911015621420340
int int:-7984833058088130560

  

因此實際加密的值是不一樣的 結果自然也就不一樣


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM