【问题标题】:Unable to decrypt/decode key无法解密/解码密钥
【发布时间】:2013-05-23 20:47:37
【问题描述】:

似乎我的 Twitter API 1.1 消费者密钥没有在我的 Amazon EC2 实例 (slightly similar to this question) 上的 CodeIgniter 控制器中被解密,因为

  • 我在进行故障排除时收到 unable to authenticate you 错误
  • 和我的print_r($settings) 语句(见下文)在浏览器中显示消费者密码的不可读取字符,尽管我使用这行'consumer_secret' => $this->encrypt->decode($this->config->item('consumer_secret') 对其进行了解密。

my_controller.php

$settings = array(
            'oauth_access_token' => $this->config->item('oauth_access_token'),
            'oauth_access_token_secret' => $this->config->item('oauth_access_token_secret'),
            'consumer_key' => $this->config->item('consumer_key'),
            'consumer_secret' => $this->encrypt->decode($this->config->item('consumer_secret'))
        );  
        print_r($settings);

注意:我将 encrypted 消费者密钥保存在 CodeIgniter 的配置目录中,并在 config.php 中设置了我的加密密钥。有趣的是,它在 WAMP 中运行良好,但在 Amazon EC2 中却不行。

我该如何解决这个问题?我应该将未加密的消费者密钥保存在配置文件中吗?

【问题讨论】:

    标签: php codeigniter encryption amazon-ec2 twitter


    【解决方案1】:

    Codeigniter 使用一些标准的加密库,如果它们不可用,就会回退。我认为mcrypt 在默认的 Amazon Linux AMI 上不可用。你可以

    a) 使用后备;只需在 ec2 上重新加密 consumer_secret 并将其放入配置中

    b) 安装 mcrypt

    $ sudo yum install php-mcrypt
    $ sudo service httpd restart
    

    【讨论】:

    • 它是如何加密的?我的印象是您通过$this->encrypt->encode('consumer_secret_string123123123'); 对其进行了加密并将结果存储在配置中。如果是这种情况,当您在 WAMP 上创建加密的消费者机密时,很可能使用的是 mcrypt,这在默认 ec2 micro 上不可用,这意味着它不会正确解密。
    • 是的,这是一种有效的方法——只需将其回显并复制下来。问题是结果会根据加密的发生方式而有所不同(加密非常、非常、非常复杂)。 mcrypt 是一个加密库,需要安装在您使用的系统上。 WAMP 自带,但 ec2 micro 没有。所以你用 mcrypt 在本地加密了字符串,但是当你在 ec2 上时,mcrypt 不存在所以 CI 退回到另一种加密方法来解密不兼容的字符串,给你留下一串乱码:)跨度>
    • 澄清一下,在 EC2 上,它是否默认安装取决于您使用的 AMI。
    • @datasage 好点,谢谢。我们指的是 Amazon Linux AMI。
    • 很高兴听到安东尼。现在是有趣的部分(实际上是使用代码):) 享受吧!
    猜你喜欢
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多