如何在数据库中存储私钥?

问题描述 投票:1回答:1

我对证书和密钥没有经验。我必须在我的数据库中存储第三方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工作正常。

php security openssl private-key
1个回答
0
投票

我在这里做错了什么?

base64_encode()上使用$encrypted可以防止数据库编码造成的数据丢失。

但是,还有很多其他问题会影响您的方案的安全性,而不仅仅是阻止它运行。

请查看this answer以获取有关如何安全实施加密的综合指南。

© www.soinside.com 2019 - 2024. All rights reserved.