CodeIgniter中的加密密钥

CodeIgniter中的加密密钥,codeigniter,Codeigniter,如果要使用会话类,CodeIgniter 2.0.2需要在配置文件中设置加密密钥,即$config['encryption\u key']。它可以是任何字符串吗?有安全加密密钥的例子吗 谢谢 密钥应尽可能随机,不得为常规密钥 文本字符串,也不是散列函数的输出,等等 要将密钥保存到应用程序/config/config.php,请打开文件并设置: $config['encryption_key'] = 'yourKeyHere' 您必须知道,加密函数生成的编码消息将比原始消息长约2.6倍。例如,

如果要使用会话类,CodeIgniter 2.0.2需要在配置文件中设置加密密钥,即
$config['encryption\u key']
。它可以是任何字符串吗?有安全加密密钥的例子吗

谢谢

密钥应尽可能随机,不得为常规密钥 文本字符串,也不是散列函数的输出,等等


要将密钥保存到应用程序/config/config.php,请打开文件并设置:

$config['encryption_key'] = 'yourKeyHere'

您必须知道,加密函数生成的编码消息将比原始消息长约2.6倍。例如,如果对长度为21个字符的字符串“my super secret data”进行加密,则最终得到的编码字符串大约为55个字符(我们称为“粗略”,因为编码字符串的长度以64位集群递增,因此它不是完全线性的)。选择数据存储机制时,请记住此信息。例如,Cookie只能保存4K的信息


除了Chumillas的答案之外,我个人还将其用于我的CodeIgniter加密字符串。快速简便。

只需转到应用程序/配置

打开config.php文件

找出单词

$config['encryption_key'] = '';
替换为

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

要将密钥保存到应用程序/config/config.php,请打开文件并设置:

$config['encryption_key'] = 'yourKeyHere'

第227行
$config['encryption_key']=“您的密钥”

我正在应用程序的安装程序中使用以下代码。它需要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;
}
函数随机键字符串(){
$source=bin2hex(openssl_随机_伪_字节(128));
$string='';
$c=0;
而(strlen($string)<32){
$dec=gmp\u strval(gmp\u init(substr$source,$c*2,2,16),10);
如果($dec>33&$dec<127&$dec!==39)
$string.=chr($dec);
$c++;
}
返回$string;
}
Codeigniter 3.1.0 不能将常规文本用于“加密密钥”

密钥应尽可能随机,并且必须不是常规文本字符串,也不是散列函数的输出等。为了创建正确的密钥,必须使用加密库的create_key()方法

$this->load->library('encryption');
$key=$this->encryption->create_key(16);
//获取密钥的十六进制编码表示形式:
$key=bin2hex($this->encryption->create_key(16));
//使用hex2bin()在配置中输入相同的值,
//因此,它仍然作为二进制文件传递到库:
$config['encryption_key']=hex2bin();

来源:

在终端中键入以下内容:

php -r 'echo bin2hex(random_bytes(16)), "\n";'

它将输出一个字符串,您可以根据Chumillas所说的内容更新config.php,使用该网站提供的256bit加密密钥会乘以2.6倍吗?如果是的话,那会不会占用更多的空间呢?我想会的。但是,CodeIgniter建议使用随机32个字符的加密密钥(如随机密钥生成器提供的密钥),以最大限度地利用加密算法,根据:+1获取有关cookie大小的信息,直到我读到这篇文章并使用了一些随机复杂的keyHi@Karimkorun,我才想到这一点——我希望自己通过一个安装程序来设置这个键,并找到了你的答案。如何将值写入配置文件?CodeIgniter提供了一种方便的方法吗?我编写了一个安装程序来实现这一点,因为它是一个开源应用程序。。您可以编写CLI脚本,在创建新应用程序时生成配置文件。$myconfig=&get_config()$key=$myconfig['encryption_key'];//为了让itI了解config.php中的配置设置,您将$key的设置放在哪里?作为参考,CI论坛的答案是:如何将生成的$key传递给配置文件$config['encryption_key']?