【问题标题】:In CakePHP, is there a better way to use AES_DECRYPT?在 CakePHP 中,有没有更好的方法来使用 AES_DECRYPT?
【发布时间】:2014-02-10 20:17:36
【问题描述】:

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

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

虽然这可行,但我想知道是否有更类似于 Cake 的方式来完成此任务,而无需手动编写 SQL 查询。

【问题讨论】:

    标签: mysql cakephp aes cakephp-2.4


    【解决方案1】:

    在你的 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;
    }
    

    这里是documentation for the AES decryption routines.

    您也可以使用virtual field 来做同样的事情。

    【讨论】:

    • 我有点困惑,因为您的链接指向 Cake API 2.5 版,而该链接似乎无法从 CakePHP 主网站获得。查看 API 版本 2.4 文档,我没有看到 Security::encrypt 和 Security::decrypt 方法。当我尝试您的代码时,我收到错误:调用未定义的方法 Security::decrypt()。这些方法会在未来的版本中出现还是我遗漏了什么?我目前正在运行 Cake 2.4.2。
    • 嗯,你是对的,它们在 2.4 中不可用。在那之前,总会有这个小sn-p:bin.cakephp.org/saved/52840(注意base64编码,你可能需要删除它)。或者,如果您已经有一些可以解密数据的 SQL,那么设置一个虚拟字段可能会更容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2019-12-08
    • 2013-01-01
    • 2015-04-07
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多