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);