Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在CakePHP中,是否有更好的方法使用AES_解密?_Mysql_Cakephp_Aes_Cakephp 2.4 - Fatal编程技术网

Mysql 在CakePHP中,是否有更好的方法使用AES_解密?

Mysql 在CakePHP中,是否有更好的方法使用AES_解密?,mysql,cakephp,aes,cakephp-2.4,Mysql,Cakephp,Aes,Cakephp 2.4,我有一些数据存储在一个使用AES_ENCRYPT加密的表中。我正在使用一个CakePHP应用程序来解密这些信息以供使用。目前,我已求助于构建SQL语句并将其存储在$query中,并使用: $results = $this->query($query); 虽然这是可行的,但我想知道是否有一种更像蛋糕一样的方法来实现这一点,而不必求助于手动编写SQL查询。在您的afterFind方法中添加类似的内容: function afterFind($results, $primary = f

我有一些数据存储在一个使用AES_ENCRYPT加密的表中。我正在使用一个CakePHP应用程序来解密这些信息以供使用。目前,我已求助于构建SQL语句并将其存储在$query中,并使用:

$results = $this->query($query);

虽然这是可行的,但我想知道是否有一种更像蛋糕一样的方法来实现这一点,而不必求助于手动编写SQL查询。

在您的afterFind方法中添加类似的内容:

    function afterFind($results, $primary = false) {

    if($primary == true){

        foreach($results as $resultKey => $resultValue) {

            $results[$resultKey][$this->alias]['decrypted'] = Security::decrypt ( $results[$resultKey][$this->alias]['encrypted'], $key, $hmacSalt );
        }
    }

    return $results;
}
这是你的电话号码


或者,您也可以使用来做同样的事情。

我有点困惑,因为您的链接指向Cake API 2.5版,而CakePHP主网站上的链接似乎不可用。查看API版本2.4文档,我没有看到Security::encrypt和Security::decrypt方法。当我尝试您的代码时,我得到一个错误:调用未定义的方法Security::decrypt()。这些方法是在未来的版本中发布的,还是我遗漏了什么?我目前正在运行Cake 2.4.2。嗯,你说得对,它们在2.4中不可用。在此之前,总会有这样一个小片段:(注意base64编码,您可能需要删除它)。或者,如果您已经有一些SQL可以解密您的数据,那么设置虚拟字段可能会更容易。