如何解密phalcon中的哈希安全性

时间:2017-02-28 15:37:49

标签: phalcon

保存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));

我有这个:注意:在...中访问未定义的属性加密

1 个答案:

答案 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);
}