繁体   English   中英

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

[英]How to store private key in database?

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

我在这里做错了什么?

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

但是,您做错的许多其他事情会影响方案的安全性,而不仅仅是阻止其运行。

查看此答案 ,以获取有关如何安全实施加密的全面指南。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM