保存crypt hash security:
$usuario = new User();
$usuario->password = $this->security->hash($this->request->getPost("pass"));
if (!$usuario->save()) {
foreach ($usuario->getMessages() as $message) {
$this->flash->error($message);
}
$this->dispatcher->forward([
'controller' => "usuario",
'action' => 'new'
]);
return;
}
现在,如何解密哈希安全性以发送我的表单:
$usuario = User::findFirstByid($iduser);
$this->tag->setDefault("pass", $this->encryption->decrypt($usuario->password));
我有这个:注意:在...中访问未定义的属性加密
答案 0 :(得分:0)
@Juri说哈希只是一种方式。但是,您可以使用encryptBase64()
这是双向的,您可以将其解码回来。 请勿将其用于密码,将其用于需要传递给某人并将其读回的某些数据,例如api令牌等。
以下是设置方法:
$di->setShared('crypt', function () use ($config) {
$crypt = new \Phalcon\Crypt();
$crypt->setKey('i$4^&/:%2@k50ROQ<@{(e=*!<7u|rI~0');
return $crypt;
});
我创建的辅助函数,但您可以直接使用它:
...
...
private static $cryptKey = 'i$4^&/:%2@k50ROQ<@{(e=*!<7u|rI~0';
/**
* Generate url safe encoded string
*
* @param string $string string to be encoded
* @return encoded string
*/
public static function encodeString($string)
{
$crypt = new \Phalcon\Crypt();
return $crypt->encryptBase64($string, self::$cryptKey, true);
}
/**
* Decode string generated with Common::encodeString()
*
* @param string $string Encoded string
* @return decoded string
*/
public static function decodeString($string)
{
$crypt = new \Phalcon\Crypt();
return $crypt->decryptBase64($string, self::$cryptKey, true);
}