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

  

因此实际加密的值是不一样的 结果自然也就不一样

转载于:https://www.cnblogs.com/SarcasMe/p/11128280.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值