php 16位 md5加密乱码的解决方法
PHP默认的md5加密是32位的, 虽然php从5.0开始说是可以16位加密的, 但是16位加密会出现乱码问题.
md5($str, true)后跟true参数时为16位,但很多时候会出现乱码(因为生成的二进制有不可显示字符!)
其实32位的加密字符串的第8到24位,和16位MD5的字符串是一样的。
我们可以先32位加密,再用substr()来截取;
function md5_16($str){
return substr(md5($str),8,16);
}
$str = “http://tools.jiliuke.com";
echo md5($str);
echo md5_16($str);
输出结果:
0b8e0d6246125a11a1223bd9c6977770
46125a11a1223bd9
php 16位加密也可以这样来写:
substr(md5(“admin”),8,-8);