--------------------------------------------------------------------------------
 函数:crypt() 
--------------------------------------------------------------------------------
 
字符串处理函数库
crypt
将字符串用 DES 编码加密。语法: string crypt(string str, string [salt]);返回值: 字符串函数种类: 编码处理
 
 
内容说明 
本函数将字符串用 UNIX 的标准加密 DES 模块加密。这是单向的加密函数,无法解密。欲比对字符串,将已加密的字符串的头二个字符放在 salt 的参数中,再比对加密后的字符串。更详细的资料请参考 UNIX Manual (man) 中的 crypt。在一些较新的 UNIX 版本中,除了 DES 之外还提供了其它的加密模块,如 MD5。甚至有些系统还用 MD5 取代 DES。在 salt 参数还有一些变化,端看传给 salt 参数的字符串长度而定:
CRYPT_STD_DES - 标准的 DES 编码,输入 2 字符的 salt。 
CRYPT_EXT_DES - 延伸的 DES 编码,输入 9 字符的 salt。 
CRYPT_MD5 - MD5 编码,输入 12 字符加上 $1$ 的 salt。 
CRYPT_BLOWFISH - 延伸的 DES 编码,输入 16 字符加上 $2$ 的 salt。 
此外,若不使用 salt 参数,则程序会自动产生。
--------------------------------------------------------------------------------整理: sadly (www.phpx.com)
 
[ 上一页  下一页 ] 

解决方案 »

  1.   

    有无实际例子呢?
    “将已加密的字符串的头二个字符放在 salt 的参数中,再比对加密后的字符串。“
    这句话实难了解。
      

  2.   

    记得从前有篇文章的,我给你找找去。
    哦,找到了,是这个:
    http://www.ccidnet.com/tech/app/2001/08/07/58_2902.html
      

  3.   

    下面这是我写的,我们公司的产品一直用这个函数进行等录口令验证。
    //////////////////////////////////////////////////////////////////
    //字符串加密函数
    //说明:    用于用户表中的用户密码的加密
    //          本函数为单向加密,不可逆转
    //          主要是采用crypt()函数加密,本函数使用标准DES算法
    //          算法             Salt长度
    //          CRYPT_STD_DES    2-character (Default)
    //          CRYPT_EXT_DES    9-character
    //          CRYPT_MD5        12-character beginning with $1$
    //          CRYPT_BLOWFISH   16-character beginning with $2$
    //输入:    $str---待加密得字符串,$salt---干扰串
    //          如果$str 不足2个字母,就用$salt串;
    //          如果$salt不足2个字母,就默认"password"
    //输出:    加密后的字符串
    //作者:    ylx([email protected])
    //编制时间:2002-04-11 14:37
    //其它:    本系统中,请注意要保持$salt的一致性,建议调用时不用$salt参数
    function str_encrypt($str,$salt="password")
    {
        //
        if(strlen($str)<2){
            if(strlen($salt)<2) $temp="password";
            else $temp=$salt;
        }
        else{
         $temp=$str;
    }
    return crypt($str,substr($temp,0,2));
    }