PHP 字符串的整数化探究

故事背景:上周在做共享内存相关的项目过程中,遇到了一个问题,函数的入参锁定为整形,而我想要保存的数据为字符型,这样就造成了冲突。

过程:于是我第一想到的就是使用md5函数,进行字符串的摘要操作。首先使用的是md5($str,true),这样先将字符串转换成16位字符串,然后进行强制转换使用base_convert(16,10)将16进制数转换为10进制数,最后用整形进行保存。

问题:首先我们知道md5这种hash函数是不可逆的,也就是说,我得到的值必须一开始就写入对应关系,否则取出的时候是无法还原的,其次md5这类hash函数会发生hash碰撞,导致我们的数据有误,所以为了避免这两种情况,我继续进行了深入的研究。

解决方案:使用bin2hex函数代替md5函数,这个函数也是可以将字符串转换成16进制数,然后我们再进行16进制转10进制进行存入。而当我们获取的时候可以使用hex2bin函数进行逆向转换,最终获得我们需要的数据,而且也很好的避免的hash冲突。

转载请注明出处,谢谢。

发表评论

电子邮件地址不会被公开。 必填项已用*标注