PHP 5.4检查密码验证

时间:2014-12-27 06:00:25

标签: php cryptography

我的PC上有PHP版本5.4因此我无法使用password_hash()而我使用了crypt()

但接下来的问题是如果密码匹配会如何验证?

PHP文档说,如果你使用crypt(),使用密码通用符的最佳方法是hash_equals(),但只有PHP 5.5。

我总是得到:

  

致命错误:在...中调用未定义的函数hash_equals()

3 个答案:

答案 0 :(得分:3)

正如你所提到的,php 5.4还没有这个功能,所以你有两个选项可以使用这个非常有用的功能:

更好的方法:

更新到php 5.5 / 5.6并使用当时的本机库

如果那是不可能的:

您可以使用此库:

https://github.com/ircmaxell/password_compat

该库提供了与PHP 5.5正在使用的password_ *函数的向前兼容性。

答案 1 :(得分:2)

你可以像这样比较它们:

<?php 
$the_password= crypt('12345', 'aasddas');
$user_entered_pass='125';
if(crypt($user_entered_pass,'aasddas') == $the_password){
    echo "right";
}else{
    echo "wrong";
}
?>

答案 2 :(得分:0)

简短的回答是password_compat的用途,所以请使用它。

  

PHP文档说,如果你使用crypt(),使用密码通用符的最佳方法是hash_equals(),但只有PHP 5.5。

  1. 如果您正在遵循合理的建议,那么您就没有使用crypt(),而是password_hash()password_verify()一起使用。
  2. hash_equals()在PHP 5.6中添加,而不是5.5。