2011-05-30 143 views
8

如果您想使用Session类,CodeIgniter 2.0.2需要在配置文件中设置一个加密密钥,即$config['encryption_key']。是否可以任意字符串?任何安全encryption_key的例子?CodeIgniter中的加密密钥

谢谢。

回答

22

$config['encryption_key'] = 'howAreYou' 

让你知道加密函数生成编码消息会比原始邮件长大约2.6倍是很重要的。例如,如果加密字符串“我的超级秘密数据”(长度为21个字符),则最终将得到一个大约55个字符的编码字符串(我们说“粗略”,因为编码的字符串长度以64为增量位集群,所以它不完全是线性的)。选择数据存储机制时请记住这些信息。例如,Cookie只能保存4K条信息。

+1

+1有关饼干大小的信息,我直到我读到这个并且使用了一些随机的复杂密钥 – Nishanthan 2014-07-15 13:01:09

17

除了Chumillas的回答,我个人使用这个Random Key Generator为我的CodeIgniter加密字符串。快捷方便。

+2

,从Chumillas的说法中可以得知,使用该网站提供的256位加密密钥会乘以2.6倍吗?如果是这样,那会不会在cookie中占用更多空间? – a7omiton 2013-04-09 13:13:47

+1

我想它会。但是,CodeIgniter建议使用随机的32位字符加密密钥(如随机密钥生成器提供的加密密钥),以根据以下内容最大限度地利用加密算法:http://ellislab.com/codeigniter/user-guide/libraries/encryption.html – Fuseblown 2014-06-18 22:27:54

2

刚去的application/config

打开config.php文件

找出字

$config['encryption_key'] = ''; 

$config['encryption_key'] = 'your_encryption_key_here'; 
1

替换此加密密钥可以是任何字符串的类型,但要使它强大(像一个好的密码应该是),建议选择一个包含随机字母数字字符的字符。也可以在大写和小写字母之间切换。

为了简化这个过程,我创建了一个方便的在线解决方案,它为您生成一个随机的32个字符的字母数字加密密钥。它可以用于任何CodeIgniter,Laravel或您需要的项目。

encryption key generator

+1

请提供更多信息。提供到外部信息源的链接不是Stackoverflow的要点。 – user2314737 2014-02-19 12:56:16

0

将密钥保存到的application/config/config.php文件,打开文件,并设置:

上线227 $config['encryption_key'] = "YOUR KEY";

+0

$ myconfig =&get_config(); $ key = $ myconfig ['encryption_key']; //并得到它 – Robot70 2016-12-08 20:10:33

0

我使用下面的代码我的应用程序的安装程序。它需要128个字节的随机数据(转换为一个十六进制字符串),并一次接受两个字符,转换为十进制数,并检查它们是否在可接受的范围内(字母数字,带符号,无空格或字符不会玩你的编辑器或配置文件很好 - 别名')

32个字符是128位,所以它适用于块密码。

function random_key_string() { 
    $source = bin2hex(openssl_random_pseudo_bytes(128)); 
    $string = ''; 
    $c = 0; 
    while(strlen($string) < 32) { 
     $dec = gmp_strval(gmp_init(substr($source, $c*2, 2), 16),10); 
     if($dec > 33 && $dec < 127 && $dec !== 39) 
      $string.=chr($dec); 
     $c++; 
    } 
    return $string; 
} 
+0

嗨@Karimkorun - 我期待通过安装程序自己设置此密钥,并遇到您的答案。你如何去写配置文件的值?代码点火器是否提供了一个方便的方法? – 2014-07-21 18:27:51

+0

我写了一个安装程序来执行此操作,因为它是一个开源应用程序。您可以在创建新应用程序时编写CLI脚本来生成配置文件。 – karimkorun 2014-08-08 02:10:25

3

Codeigniter 3.1。0 您不得使用“encryption_key”常规文本

“最关键的应该是尽可能随机的,它必须不是一个普通的文本字符串,也不是一个散列函数的输出等。为了创造一个正确的密钥,则必须使用加密库的create_key()方法”

$this->load->library('encryption'); 
$key = $this->encryption->create_key(16); 
// Get a hex-encoded representation of the key: 
$key = bin2hex($this->encryption->create_key(16)); 

// Put the same value in your config with hex2bin(), 
// so that it is still passed as binary to the library: 
$config['encryption_key'] = hex2bin(<your hex-encoded key>); 

来源:https://codeigniter.com/userguide3/libraries/encryption.html#setting-your-encryption-key

+0

我知道配置设置进入config.php,但你把$ key的设置放在哪里? – bjacobs 2017-08-18 20:32:30