Ключ шифрования в CodeIgniter - PullRequest
8 голосов
/ 30 мая 2011

CodeIgniter 2.0.2 требует установить ключ шифрования в файле конфигурации, например, $config['encryption_key'], если вы хотите использовать класс Session.Это может быть любая строка?Любой пример безопасного encryption_key?

Спасибо.

Ответы [ 8 ]

24 голосов
/ 30 мая 2011

Ключ должен быть как можно более случайным, и он не должен быть обычной текстовой строкой или выводом функции хеширования и т. Д.

Чтобы сохранить ключ в вашем application / config / config.php , откройте файл и установите:

$config['encryption_key'] = 'yourKeyHere'

Генератор случайных ключей

Это важно для васзнать, что закодированные сообщения, генерируемые функцией шифрования, будут примерно в 2,6 раза длиннее исходного сообщения.Например, если вы зашифруете строку «мои суперсекретные данные» длиной 21 символ, вы получите закодированную строку длиной примерно 55 символов (мы говорим «примерно», поскольку длина кодированной строки увеличивается на 64).битовые кластеры, так что это не совсем линейно).Учитывайте эту информацию при выборе механизма хранения данных.Например, файлы cookie могут содержать только 4K информации.

17 голосов
/ 30 мая 2011

В дополнение к ответу Chumillas я лично использую Генератор случайных ключей для моих строк шифрования CodeIgniter. Быстро и просто.

7 голосов
/ 20 сентября 2016

Codeigniter 3.1.0 ВЫ НЕ ДОЛЖНЫ ИСПОЛЬЗОВАТЬ РЕГУЛЯРНЫЙ ТЕКСТ ДЛЯ 'encryption_key'

"Ключ должен быть настолько случайным, насколько это возможно, и он не должен быть обычной текстовой строкой, ни вывод функции хеширования и т. Д. Чтобы создать правильный ключ, необходимо использовать метод create_key () библиотеки Encryption "

$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

2 голосов
/ 11 октября 2013

Просто зайдите в приложение / config

открыть файл config.php

узнай слово

$config['encryption_key'] = '';

замените это на

$config['encryption_key'] = 'your_encryption_key_here';
1 голос
/ 19 февраля 2014

Ключ шифрования может быть любой строкой, но для его надежности (как и хороший пароль) рекомендуется выбрать тот, который содержит случайные буквенно-цифровые символы. Также можно переключаться между прописными и строчными буквами.

Чтобы упростить этот процесс, я создал удобное онлайн-решение, которое генерирует случайный 32-значный буквенно-цифровой ключ шифрования для вас. Его можно использовать в любом проекте для CodeIgniter, Laravel или там, где он вам нужен.

генератор ключей шифрования

0 голосов
/ 03 июня 2018

Введите это в свой терминал:

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

Будет выведена строка, в которой вы обновите свой config.php

0 голосов
/ 01 мая 2014

Я использую следующий код в установщике моего приложения. Он принимает 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 голосов
/ 09 апреля 2014

Чтобы сохранить ваш ключ в application / config / config.php , откройте файл и установите:

в строке 227 $config['encryption_key'] = "YOUR KEY";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...