所以基本上就是这笔交易 - 我一直在研究使用php crypt的用户创建脚本,但我在比较测试方面遇到了一些问题。
有什么想法?
编辑:
<?php
$pw = 'jason';
$pw2 = 'jason';
$p1 = crypt($pw);
$p2 = crypt($pw2);
if($p1 != $p2){
echo "oh shoot";
}else{
echo "verified";
}
?>
这一直在回复&#34;哦拍摄&#34;表示两个输出不匹配。
答案 0 :(得分:1)
您应该阅读php手册crypt
中的函数string crypt ( string $str [, string $salt ] )
如果没有提供salt,PHP将自动生成标准的两个 字符(DES)盐,或十二个字符(MD5),取决于 MD5 crypt()的可用性。
如果没有提供,每次调用此函数时,PHP将随机生成一个。因此,当您两次调用crypt
时,会返回不同的结果。
答案 1 :(得分:0)
Crypt是一种单向字符串散列函数。
“单向”意味着从加密字符串中导出原始文本几乎是不可能的。单向散列函数的设计方式使得很难反转该过程,即找到一个散列到给定值的字符串。所以crypt()通常为同一个字符串提供不同的输出。
如果您想验证密码,可以执行以下操作:
<?php
$hashed_password = crypt('mypassword'); // let the salt be automatically generated
if (hash_equals($hashed_password, crypt($user_input, $hashed_password))) {
echo "Password verified!";
}
?>