openssl — сохранить открытый ключ в переменной Переполнение стека

У меня есть открытый ключ, который я хотел бы сохранить в переменной в виде строки, например:

$public_key = "-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDH82E/Dn37torKz/vhAkpji9ZS
HCyfM7JuXCbh70F75Zh2/rEVvz38yNf6f01DNXiSpzO5eTmoXD7Blsb635AOjYbl
X/WljpFbwQ2QUUDlNDAslrqXYlMzht2MCq/pjtGgk0zJx6i+HjFyV7mebeePQY/x
NOzMpmy/Ke3u+SSHRwIDAQAB
-----END PUBLIC KEY-----";

Я хотел бы иметь что-то вроде этого

$public_key = "-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDH82E/Dn37torKz/vhAkpji9ZS
HCyfM7JuXCbh70F75Zh2/rEVvz38yNf6f01DNXiSpzO5eTmoXD7Blsb635AOjYbl
X/WljpFbwQ2QUUDlNDAslrqXYlMzht2MCq/pjtGgk0zJx6i+HjFyV7mebeePQY/x
NOzMpmy/Ke3u+SSHRwIDAQAB
-----END PUBLIC KEY-----";

На данный момент, это не удается, потому что ключ больше не действителен, потому что пробелы с отступом

Как бороться с линиями разрыва и отступами?

2

Решение

Используйте оператор heredoc для выравнивания ключа.

$str = <<<'KEY'
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDH82E/Dn37torKz/vhAkpji9ZS
HCyfM7JuXCbh70F75Zh2/rEVvz38yNf6f01DNXiSpzO5eTmoXD7Blsb635AOjYbl
X/WljpFbwQ2QUUDlNDAslrqXYlMzht2MCq/pjtGgk0zJx6i+HjFyV7mebeePQY/x
NOzMpmy/Ke3u+SSHRwIDAQAB
KEY;

Или строки concat:

$str = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDH82E/Dn37torKz/vhAkpji9ZS'.
'HCyfM7JuXCbh70F75Zh2/rEVvz38yNf6f01DNXiSpzO5eTmoXD7Blsb635AOjYbl'.
'X/WljpFbwQ2QUUDlNDAslrqXYlMzht2MCq/pjtGgk0zJx6i+HjFyV7mebeePQY/x'.
'NOzMpmy/Ke3u+SSHRwIDAQAB';

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

Кроме того, вы можете создать файл, такой как key.php:

<?php
return 'yourkey';
?>

И тогда вы можете сохранить его в переменную следующим образом:

$var = include 'key.php';

Таким образом, загрязнение кода сведено к минимуму.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]