crypt() 函数返回使用 DES、Blowfish 或 MD5 算法的哈希字符串。
该函数在不同的操作系统上表现不同。 PHP 在安装时检查哪些算法可用以及要使用哪些算法。
盐参数是可选的。然而, crypt() 创建一个没有盐的弱密码。确保指定足够强的盐以获得更好的安全性。
有一些常量与 crypt() 函数一起使用。这些常量的值由 PHP 在安装时设置。
常数:
在此函数支持多种算法的系统上,如果支持,上述常量将设置为"1",否则设置为"0"。
笔记:没有解密功能。 crypt() 函数使用单向算法。
crypt(
str,salt)
Parameter | Description |
---|---|
str | Required. Specifies the string to be hashed |
salt | Optional. A salt string to base the hashing on |
返回值: | 返回编码字符串或小于 13 个字符的字符串,并保证在失败时与 salt 不同 |
---|---|
PHP 版本: | 4+ |
变更日志: | PHP 5.6.0 - 如果出现以下情况,则显示 E_NOTICE 安全警告盐被省略。 PHP 5.3.7 - 添加了 $2x$ 和 $2y$ Blowfish 模式。 PHP 5.3.2 - 添加了 SHA-256 和 SHA-512。修复了 Blowfish 在无效回合中的行为返回 "failure" 字符串("*0" 或 "*1"),而不是回退到 DES。 PHP 5.3.0 - PHP 现在包含自己的 MD5 crypt、标准 DES、扩展 DES 和 Blowfish 算法的实现,如果系统缺乏对一种或多种算法的支持,则将使用它。 |
在此示例中,我们将测试不同的算法:
<?php
// 2 character salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('something','st')."\n<br>";
}
else
{
echo "Standard DES not supported.\n<br>";
}
// 4 character salt
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES: ".crypt('something','_S4..some')."\n<br>";
}
else
{
echo "Extended DES not supported.\n<br>";
}
// 12 character salt starting with $1$
if (CRYPT_MD5 == 1)
{
echo "MD5: ".crypt('something','$1$somethin$')."\n<br>";
}
else
{
echo "MD5 not supported.\n<br>";
}
// Salt starting with $2a$. The two digit cost parameter: 09. 22 characters
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>";
}
else
{
echo "Blowfish DES not supported.\n<br>";
}
// 16 character salt starting with $5$. The default number of rounds is 5000.
if (CRYPT_SHA256 == 1)
{
echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; }
else
{
echo "SHA-256 not supported.\n<br>";
}
// 16 character salt starting with $6$. The default number of rounds is 5000.
if (CRYPT_SHA512 == 1)
{
echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$');
}
else
{
echo "SHA-512 not supported.";
}
?>
上面代码的输出可能是(取决于操作系统):
Standard DES: stqAdD7zlbByI
Extended DES: _S4..someQXidlBpTUu6
MD5: $1$somethin$4NZKrUlY6r7K7.rdEOZ0w.
Blowfish: $2a$09$anexamplestringforsaleLouKejcjRlExmf1671qw3Khl49R3dfu
SHA-256: $5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4PmoNKQUGWFXlVy9vu9
SHA-512: $6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU/
oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQpp1XKI6LLQ0.
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!