echo md5("abc", true);//返回16位,不过这是在PHP5里才有。

解决方案 »

  1.   

    我用的是php4,有什么办法吗,除了截取之外,我觉得截取太不安全了
      

  2.   

    那,比方说
    字符串 “abc” md5 后结果是 “abcdefghijklmn.......789”
    字符串 “efg” md5 后结果是  abcdefghijklmn.......780”
    “...”部分内容相同
    那么他们两个截取16位后结果相同
    如果是密码的话
    到最后用密码abc登陆,和密码efg登陆,都可以进入系统
    不是不大安全吗?
      

  3.   

    只有自己按md5的算法写!
    php只提供32位的md5摘要(注意md5不是加密)
    在php5中md5函数的第二个参数为true时,返回的是4字节的二进制值,表示成十六进制就是32位的
    如果你想得到php5中md5("abc", true)这样的返回值,那么可以:
    function bin_md5($val) {
      return pack("H32",md5($val));
    }截取是不行的,截取将丢失很多信息。
    32位的md5都不能保证唯一,何况被截断了呢
      

  4.   

    哪里有php的16位的md5
    我用的是php4
    没有php5里面的功能
      

  5.   

    那md5不能对密码进行唯一的加密的话,还有没有其他的办法来进行密码的加密呢
    我用的是php4,里面有自带函数吗?我看了很多函数,似乎找不到,
    哪里有此类的加密函数下载啊
      

  6.   

    <?php
    function bin_md5($val) {
      return pack("H32",md5($val));
    }
    $str = "abc";
    echo $str . "<br>";//原字符串
    echo bin_md5($str) . "<br>";//加密
    print_r(unpack("H32", bin_md5($str)));//解密
    ?>用版主的正好适合楼主的要求。
    支持!!!
      

  7.   

    诶。。你自己写个md5.php不就行了,要几位就几位。
      

  8.   

    那就不要用php提供的md5,去找一个其它的md5函数记得是 md5.php
      

  9.   

    http://www.google.com/search?hl=zh-CN&q=md5.php&btnG=Google%E6%90%9C%E7%B4%A2&lr=
      

  10.   

    或者看看php的源代码,有好多好东西!