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