Я постараюсь сделать это как можно более коротким, не делая его полностью нечитаемым.
Я храню зашифрованные наборы данных в своей базе данных, используя реализацию openssl в PHP.
Вот кое-чтоаналогично тому, что я делаю:
$pw = 'nobody loves you like I do.';
$cm = 'aes-256-cbc-hmac-sha256';
$c_key = '-$k���۱�d��o��ּ)2�"�C�!{���"�pO�⌧Ӝ�A��)mL�ڡ��i����OP753D8⮩eÒ98u07ף�11�u�e';
$iv = '�w�[(32';
$sslpw = openssl_encrypt($pw, $cm, $c_key, $options=0, $iv);
Все значения, которые я заполняю $c_key
и $iv
, были сгенерированы с использованием openssl_random_pseudo_bytes()
Итак, подумавздесь нет проблем, я создал небольшой файл со всеми такими значениями, которые будут получены из переменных среды, например:
export PAXYZ_C_KEY='-$k���۱�d��o��ּ)2�"�C�!{���"�pO�⌧Ӝ�A��)mL�ڡ��i����OP753D8⮩eÒ98u07ף�11�u�e';
export PAXYZ_C_IV='�w�[(32'
Однако после того, как я поставил файл и прочитал их в своем PHP-скрипте, я потерялхорошие 50% каждой строки, даже если они строковые литералы.
Однако, если я установлю env var напрямую через командную строку, он установится просто отлично.Проблема заключается в том, чтобы поместить его в файл и установить в файле.Я даже не знаю, почему это будет иметь значение, но это имеет значение.
Если я все строго придерживаюсь PHP, никаких проблем с этими символами не возникает.
На каком уровне можноЯ даже диагностирую это?Кажется, не имеет значения, копирую и вставляю ли я в терминал или в редактор - результат тот же.Но на самом деле, это то, где мой опыт зашёл в тупик.
К сожалению, я уже проделал большую работу по шифрованию с моим текущим набором ключей - так что я не слишком горячо перешифрую все, еслиЯ не обязан.