gpt4 book ai didi

php - 在 cakephp 中使用回调方法解密和加密

转载 作者:行者123 更新时间:2023-12-03 20:19:36 25 4
gpt4 key购买 nike

我想在将值存储到我的数据库之前使用回调方法对其进行加密,并在将其显示回应用程序之前对其进行解密。

我使用了 documentation 中提供的示例之一.

在我的 core.php 中,我放置了以下内容:

Configure::write('Security.cipherCriptKey','su0HKssPmdbwgK6LdQLqzp0YmyaTI7zO');

在我的模型中,我使用了两种方法:

  1. beforeSave()

    public function beforeSave($options = array()) {

    $value=$this->data['Internship']['encryptedindb'];
    $encrypted = Security::encrypt($value, Configure::read('Security.cipherCriptKey'));
    $this->data['Internship']['encryptedindb'] = $encrypted;
    return true;
    }
  2. afterFind()

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

    foreach ($results as $key => $val) {
    if(isset($val['Internship']['encryptedindb'])){
    $results['Internship']['encryptedindb'] = Security::decrypt($val['Internship']['encryptedindb'], Configure::read('Security.cipherCriptKey'));
    }
    return $results;
    }
    }

beforeSave() 似乎工作正常,因为我可以在我的数据库中看到加密的值。但是,在我看来,当我想查看已解密 字段的内容时,它会将其显示为空字段。就好像 afterFind() 方法无法解密它一样(它总是返回 false)。

下面是我的应用程序 View 的屏幕截图:

View

以及加密值的数据库:

DB

最佳答案

函数Security::encrypt($text) 使用AES-256 算法加密$text。它返回二进制数据,因此,它应该以二进制数据类型而不是文本类型存储。

以下任何一项都应该有效:

  • 二进制
  • 可变二进制
  • BLOB(TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB)。

将其设置为 VARBINARY(255) 应该就足够了。

如需进一步引用,请参阅:

关于php - 在 cakephp 中使用回调方法解密和加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34818969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com