Php 无法解密/解码密钥

Php 无法解密/解码密钥,php,codeigniter,encryption,amazon-ec2,twitter,Php,Codeigniter,Encryption,Amazon Ec2,Twitter,我的Twitter API 1.1的消费者密钥似乎没有在我的Amazon EC2实例上的CodeIgniter控制器中解密,因为 故障排除时,我遇到了一个无法验证您身份的错误 我的print\r($settings)语句(见下文)在浏览器中显示消费者机密的不可读字符,尽管我用这行'consumer\u secret'=>$this->encrypt->decode($this->config->item('consumer\u secret')对其进行了解密。 my_controller.p

我的Twitter API 1.1的消费者密钥似乎没有在我的Amazon EC2实例上的CodeIgniter控制器中解密,因为

  • 故障排除时,我遇到了一个
    无法验证您身份的
    错误
  • 我的
    print\r($settings)
    语句(见下文)在浏览器中显示消费者机密的不可读字符,尽管我用这行
    'consumer\u secret'=>$this->encrypt->decode($this->config->item('consumer\u 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);
注意:我将加密的消费者密钥保存在CodeIgniter的配置目录中,并在config.php中设置了我的加密密钥。有趣的是,它在WAMP中工作正常,但在Amazon EC2中却没有


如何解决此问题?是否应将未加密的使用者密钥保存在配置文件中?

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

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

b) 安装mcrypt

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

它是如何被加密的?我觉得你是通过
$this->encrypt->encode('consumer\u secret\u string123123')加密的
并将结果存储在配置中。如果是这样的话,当你在WAMP上创建加密的消费者机密时,它可能使用了默认ec2 micro上不可用的mcrypt,这意味着它无法正确解密。是的,这是一种有效的方法——只需将其回显并复制下来。问题是结果会因加密方式的不同而不同(加密非常非常复杂)。是需要安装在您使用的系统上的加密库。WAMP自带,但ec2 micro没有。因此,您使用mcrypt对字符串进行了本地加密,但当您使用ec2时,mcrypt不在那里,因此CI使用另一种加密方法对不兼容的字符串进行解密,留下一个乱七八糟的字符串:)澄清一下,在ec2上,它取决于您使用的是哪种AMI,以及它是否默认安装。@datasage很好,谢谢。我们指的是Amazon Linux AMI。很高兴听到安东尼。现在是有趣的部分(实际使用代码):)享受吧!