我正在使用crypt()
函数,但我不知道我的实现是否正确。如果我写这样的东西,我正在使用什么样的算法:
crypt('PE','12345')
我阅读了文档,但我不知道选择了哪种算法与12345
.
我正在使用crypt()
函数,但我不知道我的实现是否正确。如果我写这样的东西,我正在使用什么样的算法:
crypt('PE','12345')
我阅读了文档,但我不知道选择了哪种算法与12345
.
这取决于底层系统。我建议你改用hash()。例如。
$algos = hash_algos();
if (in_array("sha256", $algos)) {
$str = hash ("sha256", "something" . "salt");
}
这样,您可以始终使用一种散列算法。
如文档所述,取决于系统。
要确定您的系统支持什么,您可以检查 PHP 定义的常量的值。常量 CRYPT_SALT_LENGTH 将显示盐字符串的预期长度。DES 接受两个字符的盐。MD5 接受 12 个字符。您还可以检查是否设置了以下任何标志:CRYPT_STD_DES、CRYPT_EXT_DES、CRYPT_MD5、CRYPT_BLOWFISH。为此,请发出如下命令:echo CRYPT_MD5
数字 1 表示支持;0 表示不是。
考虑在此处阅读详细信息http://www.techrepublic.com/article/the-perils-of-using-php-crypt/1058691
crypt()
如果系统上可用,将使用基于标准Unix DES 的算法返回散列字符串,如果不可用,则返回基于 MD5 的算法。您可以从以下列表中设置要使用的算法类型:
这个列表可以这样使用:
//setting the value to 1 means enable this algorithm
//which will return true or false.
if (CRYPT_STD_DES == 1) {
echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl') . "\n";
}
if (CRYPT_EXT_DES == 1) {
echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm') . "\n";
}
if (CRYPT_MD5 == 1) {
echo 'MD5: ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "\n";
}
if (CRYPT_BLOWFISH == 1) {
echo 'Blowfish: ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "\n";
}
if (CRYPT_SHA256 == 1) {
echo 'SHA-256: ' . crypt('rasmuslerdorf', '$5$rounds=5000$usesomesillystringforsalt$') . "\n";
}
if (CRYPT_SHA512 == 1) {
echo 'SHA-512: ' . crypt('rasmuslerdorf', '$6$rounds=5000$usesomesillystringforsalt$') . "\n";
}
这意味着如果您不想使用系统默认值,则必须在使用之前选择要使用的算法类型。
crypt() 将使用基于标准 Unix DES 的算法或系统上可能可用的替代算法返回一个散列字符串。
来自 PHP 文档