【问题标题】:How to decrypt a cakephp 3 cookie如何解密 cakephp 3 cookie
【发布时间】:2015-08-07 02:26:12
【问题描述】:

假设你有一个这样的 cookie 字符串:

Q2FrZQ==.AAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCDDDDDDDDDDDDD

如何在 cakephp 3 中使用 AES 解密?

好像Cake\Utility\Security::decrypt($cipher, $key, $hmacSalt = null) 做到了:

http://book.cakephp.org/3.0/en/core-libraries/security.html#Cake\Utility\Security::decrypt

但是参数呢? hmacSalt 是应用程序的盐值,但第二个参数中的 key 值是什么?

【问题讨论】:

  • 你想做什么?
  • 我将加密的 cookie 存储在数据库中。有时我需要解密它们以进行验证。

标签: php cookies cakephp-3.0


【解决方案1】:

看一下cookie组件的来源,$hmacSalt参数没有被使用,

https://github.com/cakephp/.../Controller/Component/CookieComponent.php#L437

并且$key 参数由组件key 配置选项值提供,该值具有

启用加密 cookie 时使用的加密密钥。默认为 Security.salt。

因此,除非您手动配置了 cookie 组件 key 选项,否则解密 AES 加密的 cookie 值所需的全部内容应该是

Security::decrypt($value, Security::salt());

其中$value 是正确提取和解码的原始加密数据,因为 cookie 组件将传递它:

$prefix = 'Q2FrZQ==.';
$value = base64_decode(substr($value, strlen($prefix)));

https://github.com/cakephp/.../Controller/Component/CookieComponent.php#L431-L432

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 2013-11-30
    • 1970-01-01
    相关资源
    最近更新 更多