crypt() 函数返回使用 DES、Blowfish 或 MD5 加密的字符串。
在不同的操作系统上,本函数的行为不同,某些操作系统支持一种以上的算法类型。在安装时,PHP 会检查什么算法可用以及使用什么算法。
语法
crypt(str,salt)参数 描述
str | 必需。规定要编码的字符串。 |
salt | 可选。用于增加被编码字符数目的字符串,以使编码更加安全。 如果未提供 salt 参数,则每次调用该函数时会随机生成一个。 |
说明
确切的算法依赖于 salt 参数的格式和长度。
下面是与 crypt() 函数一起使用的一些常量。在安装时,由 PHP 设置这些常量:
- [CRYPT_SALT_LENGTH]
- [CRYPT_STD_DES]
- [CRYPT_EXT_DES]
- [CRYPT_MD5]
- [CRYPT_BLOWFISH]
单向加密的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$
CRYPT_EXT_DES 9-character
CRYPT_MD5 12-character beginning with $1$
CRYPT_BLOWFISH 16-character beginning with $2$
<?php
print "My system salt size is: ". CRYPT_SALT_LENGTH . "\n<br />";
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt("hello world","12")."\n<br />";
}
else
{
echo "Standard DES not supported.\n<br />";
}
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES: ".crypt("hello world","123456789")."\n<br />";
}
else
{
echo "Extended DES not supported.\n<br />";
}
if (CRYPT_MD5 == 1)
{
echo "MD5: ".crypt("hello world","\$1\$123456789")."\n<br />";
}
else
{
echo "MD5 not supported.\n<br />";
}
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt("hello world","\$2a\$123456789012")."\n<br />";
}
else
{
echo "Blowfish DES not supported.";
}
?>
- My system salt size is: 123
- Standard DES: 12M4UL.gjYcFk
- Extended DES: 12M4UL.gjYcFk
- MD5: $1$12345678$lo0TMwpURU6MI/a/.iXrK.
- Blowfish: $2wR1loXWfhEk