php 16位 md5加密乱码的解决方法

2014年06月02日 21:16 by:老修--走失的镜头盖

导读: PHP默认的md5加密是32位的, 虽然php从5.0开始说是可以16位加密的, 但是16位加密会出现乱码问题. 用substr()来解决 php 16位 md5加密乱码的问题

PHP默认的md5加密是32位的, 虽然php从5.0开始说是可以16位加密的, 但是16位加密会出现乱码问题. 

md5($str, true)后跟true参数时为16位,但很多时候会出现乱码(因为生成的二进制有不可显示字符!)

其实32位的加密字符串的第8到24位,和16位MD5的字符串是一样的;

php 16位 md5加密乱码的解决方法

我们可以先32位加密,再用substr()来截取;

  1. function md5_16($str){
  2.      return substr(md5($str),8,16);
  3. }
  4. $str = "http://m.lao8.org";
  5. echo md5($str);
  6. echo md5_16($str);

输出结果:

  1. 8ce44e749295a87c8628aeca5ff39c27
  2. 9295a87c8628aeca

php 16位加密也可以这样来写:

  1. substr(md5("admin"),8,-8);