Я не очень опытен с сертификатами и ключами. Я должен хранить закрытый ключ для стороннего 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 работает.
Что я тут не так делаю?
С помощью base64_encode()
на $encrypted
предотвратит потерю данных при кодировании базы данных.
Тем не менее, есть много других вещей, которые вы делаете неправильно, которые влияют на безопасность вашей схемы, а не просто препятствуют ее функционированию.
смотреть на этот ответ для всестороннего руководства о том, как реализовать шифрование безопасно.
Других решений пока нет …