首页 > 建站教程 > PHP教程 >  PHP md5 相同数据字符串与数字不一致问题正文

PHP md5 相同数据字符串与数字不一致问题

作为PHP常用的加密方法MD5 在加密相同字符的数字与数字字符串是出现的不一致问题

1echo 'int   :'.md5 (1046191101562142034).PHP_EOL;
2echo 'string:'.md5 ('1046191101562142034').PHP_EOL;
3  
4//结果
5int   :87ab7e2de7b9732e606ed81c4b0c9606
6string:87ab7e2de7b9732e606ed81c4b0c9606
此时结果还是一致的

但是当我们的数字多增加一位时 就会出现结果不一致的现象

1echo 'int   :'.md5 (10461911015621420340).PHP_EOL;
2echo 'string:'.md5 ('10461911015621420340').PHP_EOL;
3  
4//结果
5int   :386dea57fc50309fdec13307d6cc47da
6string:79cb1355eaede60858cb31dc40e60b53
出现这个原因是因为PHP_INT_MAX的值为 9223372036854775807

当出现数字大于这个值时 PHP本身就会做溢出处理
1echo 'ori int: 10461911015621420340'.PHP_EOL;
2echo 'int int:'.intval (10461911015621420340).PHP_EOL;
3  
4//结果
5ori int: 10461911015621420340
6int int:-7984833058088130560
因此实际加密的值是不一样的 结果自然也就不一样