-
10月28日
-
【函数功能】
该函数返回使用 DES、Blowfish 或 MD5 算法加密的字符串。 注释: 1.在不同的操作系统上,该函数的行为不同,某些操作系统支持一种以上的算法类型。在安装时,PHP 会检查什么算法可用以及使用什么算法。 2.具体的算法依赖于 salt 参数的格式和长度。通过增加由使用特定加密方法的特定字符串所生成的字符串数量,salt 可以使加密更安全。
【函数语法】
crypt ($str, $salt = null)
【参数说明】
$str:必需,要编码的字符串。 $salt:可选,用于增加被编码字符数目的字符串,以使编码更加安全。如果未提供 salt 参数,则每次调用该函数时 PHP 会随机生成一个。
【演示程序】
<?php /** * crypt ($str, $salt = null) * **/ $str = "hello i am PHP!"; echo crypt($str); echo '<br>'; echo crypt($str,'php1234'); ?>
【输出结果】
$1$F51.qE/.$53RoMX5KCS1Rh2zsIeveJ1 phjPfGAdJamWA
【特别注意】
1.crypt() 函数使用一种单向算法,没有相应的解密函数。 2.PHP 版本:4+。
下面是一些和 crypt() 函数一起使用的常量。这些常量值是在安装时由 PHP 设置的。
[CRYPT_SALT_LENGTH] 默认的加密长度。使用标准的 DES 加密,长度为 2 [CRYPT_STD_DES] 基于标准 DES 算法的散列使用 "./0-9A-Za-z" 字符中的两个字符作为盐值。在盐值中使用非法的字符将导致 crypt() 失败。 [CRYPT_EXT_DES] 扩展的基于 DES 算法的散列。其盐值为 9 个字符的字符串,由 1 个下划线后面跟着 4 字节循环次数和 4 字节盐值组成。它们被编码成可打印字符,每个字符 6 位,有效位最少的优先。0 到 63 被编码为 "./0-9A-Za-z"。在盐值中使用非法的字符将导致 crypt() 失败。 [CRYPT_MD5] MD5 散列使用一个以 $1$ 开始的 12 字符的字符串盐值。 [CRYPT_BLOWFISH] Blowfish 算法使用如下盐值:“$2a$”,一个两位 cost 参数,“$” 以及 64 位由 “./0-9A-Za-z” 中的字符组合而成的字符串。在盐值中使用此范围之外的字符将导致 crypt() 返回一个空字符串。两位 cost 参数是循环次数以 2 为底的对数,它的范围是 04-31,超出这个范围将导致 crypt() 失败。 CRYPT_SHA256 SHA-256 算法使用一个以 $5$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 “rounds=<N>$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000,最小是 1000,最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。 CRYPT_SHA512 SHA-512 算法使用一个以 $6$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 “rounds=<N>$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000,最小是 1000,最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。 在该函数支持多种算法的系统上,如果支持上述常量则设置为 "1",否则设置为 "0"。
更新日志
版本 说明 5.3.2 基于 Ulrich Drepper 的实现,新增基于 SHA-256 算法和 SHA-512 算法的 crypt。 5.3.2 修正了 Blowfish 算法由于非法循环导致的问题,返回“失败”字符串(“*0” 或 “*1”)而不是转而使用 DES 算法。 5.3.0 PHP 现在包含了它自己的 MD5 Crypt 实现,包括标准 DES 算法,扩展的 DES 算法以及 Blowfish 算法。如果系统缺乏相应的实现,那么 PHP 将使用它自己的实现。
【原版定义】
/** * One-way string hashing * @link http://www.php.net/manual/en/function.crypt.php * @param str string <p> * The string to be hashed. * </p> * @param salt string[optional] <p> * An optional salt string to base the hashing on. If not provided, the * behaviour is defined by the algorithm implementation and can lead to * unexpected results. * </p> * @return string the hashed string or a string that is shorter than 13 characters * and is guaranteed to differ from the salt on failure. */
转载请注明出处:php1234.cn ,原文地址:http://www.php1234.cn/a/functions/2016/1028/110.html