代码之家  ›  专栏  ›  技术社区  ›  trante

如何解密cakephp 3 cookie

  •  2
  • trante  · 技术社区  · 9 年前

    假设您有如下cookie字符串:

    Q2FrZQ==.AAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCDDDDDDDDDDDDD
    

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

    看起来 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 第二个参数中的值?

    1 回复  |  直到 9 年前
        1
  •  0
  •   ndm    9 年前

    只需查看cookie组件的源代码 $hmacSalt 参数未被使用,

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

    以及 $key 参数由组件提供 key config选项值,该值保持

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

    因此,除非您手动配置了cookie组件 钥匙 选项,解密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