Как хранить закрытый ключ в базе данных?

Я не очень опытен с сертификатами и ключами. Я должен хранить закрытый ключ для стороннего API в моей базе данных. У меня есть ключ, чтобы зашифровать это. Это то, что я сделал в PHP

$private_key = "----BEGIN PRIVATE KEY---\nABCDBLAH\n---END PRIVATE KEY----\n"// The encryption and storing part - 1
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
$encrypted = openssl_encrypt($data, 'aes-256-cbc', 'mykey', 0, $iv);
$encrypted_data = $encrypted .':'base64_encode($iv);
//store in the database

//retrieve later
$parts = explode(':',$encrypted_data);
$private_key= openssl_decrypt($parts[0], 'aes-256-cbc', 'mykey', 0, base64_decode($parts[1]));
// 2
Use in the API.

Если я игнорирую часть между 1 и 2 для хранения и извлечения ключа из базы данных, API и все работает правильно, что означает, что что-то не так в хранении и получении ключа. Что я тут не так делаю? Если это не правильный путь, каким способом я должен использовать? Пожалуйста, помогите мне.

Примечание: / n часть в закрытом ключе. Если я не шифрую, / n не имеет значения, и API работает.

1

Решение

Что я тут не так делаю?

С помощью base64_encode() на $encrypted предотвратит потерю данных при кодировании базы данных.

Тем не менее, есть много других вещей, которые вы делаете неправильно, которые влияют на безопасность вашей схемы, а не просто препятствуют ее функционированию.

смотреть на этот ответ для всестороннего руководства о том, как реализовать шифрование безопасно.

0

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

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

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