首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在cakephp中使用CallBack方法进行解密和加密

在cakephp中使用CallBack方法进行解密和加密
EN

Stack Overflow用户
提问于 2016-01-16 04:02:41
回答 1查看 2.2K关注 0票数 2

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

我使用了documentation中提供的一个示例。

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

代码语言:javascript
复制
Configure::write('Security.cipherCriptKey','su0HKssPmdbwgK6LdQLqzp0YmyaTI7zO');

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

  1. beforeSave()

公共函数数组($options=beforeSave()){$value=$this->数据‘实习’;$encrypted =安全::encrypt($value,Configure::read('Security.cipherCriptKey'));$this->数据‘实习’= $encrypted;return true;}

  • afterFind()

公共函数afterFind ($results,$primary = false) { foreach ($results as $key => $val) {if(isset($val‘’Internship‘)){$results’‘Internship’=安全::decrypt($val‘’Internship‘,Configure::read('Security.cipherCriptKey'));} return $results;} }

beforeSave()似乎工作得很好,因为我可以在我的数据库中看到加密值。然而,在我的视图中,当我想要查看解密的字段的内容时,它将其显示为一个空字段。就好像afterFind()方法无法解密它一样(它总是返回false)。

下面是我的应用程序视图的截图:

和具有加密值的数据库:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-16 08:55:47

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

以下任一操作都应该有效:

  • BINARY
  • VARBINARY
  • BLOB (TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB)。

将其设置为VARBINARY(255)可能就足够了。

有关更多参考信息,请参阅:

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34818969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档