Yii 中的密码加密为 sha512
password encryption in Yii to sha512
我正在尝试对 Yii 中的密码进行 Sha512 加密,但它不起作用
我相信代码是这样的 $model->PassWord=crypt($model->PassWord,'salt');
但是我收到这个错误 Fatal error: Call to undefined function CRYPT_SHA512() in protected/controllers/UsersController.php on line 73
有什么想法吗?
完整代码:
public function actionCreate()
{
$model=new Users;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Users']))
{
$model->attributes=$_POST['Users'];
$model->PassWord=crypt_SHA512($model->PassWord,'salt');
if($model->save())
$this->redirect(array('view','id'=>$model->users_id));
}
$this->render('create',array(
'model'=>$model,
));
}
编辑
这$model->PassWord=crypt($model->PassWord,'$rounds=1212charactersaltt');
使密码加密,太棒了!
现在尝试登录时出现此错误
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /web/users/m2052626/AST_14/Bugg.ly2/protected/components/UserIdentity.php on line 25
这是我最初用于登录的代码
public function authenticate()
{
$user=Users::model()->findByAttributes(array('email'=>$this->username));
if($user===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
//else if($record->PassWord!==md5($this->password))
else if($user->PassWord!==($this->password))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id=$user->users_id;
// $this->setState('title', $record->title);
$this->errorCode=self::ERROR_NONE;
而且我尝试用这个 if (crypt($this->password '$rounds=1212charactersaltt') == $user->PassWord) { echo "password matched"; } else { echo "password did not match"; }
替换这个 else if($user->PassWord!==($this->password))
但没有用
你来电
$model->PassWord=crypt_SHA512($model->PassWord,'salt');
在我看来,您正在尝试调用模块名称而不是函数。该功能仍然只是 crypt(plaintext, salt);在 salt 字符串中,您选择哈希函数,并包括轮数(对于 SHA 加密)以及您的 salt(在这种情况下应该恰好 16 个字符长),以“$”分隔。所以你的电话真的看起来像这样:
$model->PassWord=crypt($model->PassWord,'$rounds=1212charactersaltt');
在上面的代码中,salt 字符串以 $(必需)开头,后跟 6(SHA512 哈希的编号),然后是 $round=1212,其中 1212 是您希望 SHA 运行(必须大于 1000),最后一个 $ 和你的盐。
这是手册:
http://php.net/crypt
我正在尝试对 Yii 中的密码进行 Sha512 加密,但它不起作用
我相信代码是这样的 $model->PassWord=crypt($model->PassWord,'salt');
但是我收到这个错误 Fatal error: Call to undefined function CRYPT_SHA512() in protected/controllers/UsersController.php on line 73
有什么想法吗?
完整代码:
public function actionCreate()
{
$model=new Users;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Users']))
{
$model->attributes=$_POST['Users'];
$model->PassWord=crypt_SHA512($model->PassWord,'salt');
if($model->save())
$this->redirect(array('view','id'=>$model->users_id));
}
$this->render('create',array(
'model'=>$model,
));
}
编辑
这$model->PassWord=crypt($model->PassWord,'$rounds=1212charactersaltt');
使密码加密,太棒了!
现在尝试登录时出现此错误
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /web/users/m2052626/AST_14/Bugg.ly2/protected/components/UserIdentity.php on line 25
这是我最初用于登录的代码
public function authenticate()
{
$user=Users::model()->findByAttributes(array('email'=>$this->username));
if($user===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
//else if($record->PassWord!==md5($this->password))
else if($user->PassWord!==($this->password))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id=$user->users_id;
// $this->setState('title', $record->title);
$this->errorCode=self::ERROR_NONE;
而且我尝试用这个 if (crypt($this->password '$rounds=1212charactersaltt') == $user->PassWord) { echo "password matched"; } else { echo "password did not match"; }
替换这个 else if($user->PassWord!==($this->password))
但没有用
你来电
$model->PassWord=crypt_SHA512($model->PassWord,'salt');
在我看来,您正在尝试调用模块名称而不是函数。该功能仍然只是 crypt(plaintext, salt);在 salt 字符串中,您选择哈希函数,并包括轮数(对于 SHA 加密)以及您的 salt(在这种情况下应该恰好 16 个字符长),以“$”分隔。所以你的电话真的看起来像这样:
$model->PassWord=crypt($model->PassWord,'$rounds=1212charactersaltt');
在上面的代码中,salt 字符串以 $(必需)开头,后跟 6(SHA512 哈希的编号),然后是 $round=1212,其中 1212 是您希望 SHA 运行(必须大于 1000),最后一个 $ 和你的盐。
这是手册: http://php.net/crypt