使用密码短语将 RSA 私钥写入 PEM 文件
Writing RSA Private Key to PEM File with Passphrase
我正在编写 C++ 函数来创建 RSA 密钥对并将私钥存储在 PEM 文件中。我使用如下示例中的代码:
static unsigned char passphrase[] = "0123456789";
int keySize = 2048;
int keyExponent = 65537;
BIGNUM *bn;
. . .
bn = BN_new();
BN_set_word(bn, keyExponent);
rsa = RSA_new();
RSA_generate_key_ex(rsa, keySize, bn, nullptr);
FILE* fp = fopen(fileName, "w");
PEM_write_RSAPrivateKey(fp, rsa, EVP_des_ede3_cbc(), passphrase, 10, nullptr, nullptr);
此代码按预期工作,但现在我被要求在没有密码保护的情况下存储私钥。有没有办法让 function PEM_write_RSAPrivateKey
不使用密码?我尝试的一种选择是按如下方式更改函数调用:
outcome = PEM_write_RSAPrivateKey(fp, rsa, EVP_des_ede3_cbc(), nullptr, 0, nullptr, nullptr);
但这会提示用户输入密码(这与函数 PEM_write_RSAPrivateKey 的文档中所述完全相同)。我还尝试使用 returns 零(表示没有密码)的密码回调,但这会导致 PEM_write_RSAPrivateKey
返回错误。
我还可以做些什么来将私钥存储在没有密码的 PEM 文件中?我认为这一定是可能的,因为我可以使用 openssl 命令来完成它,例如:openssl genrsa -out tmsPrivKey.pem 2048
。
第三个参数是用于加密私钥的加密密码。因此,您需要做的就是将 nullptr 传递给函数。
例如
outcome = PEM_write_RSAPrivateKey(fp, rsa, nullptr, nullptr, 0, nullptr, nullptr);
The PEM functions which write private keys take an enc parameter which
specifies the encryption algorithm to use, encryption is done at the
PEM level. If this parameter is set to NULL then the private key is
written in unencrypted form.
我正在编写 C++ 函数来创建 RSA 密钥对并将私钥存储在 PEM 文件中。我使用如下示例中的代码:
static unsigned char passphrase[] = "0123456789";
int keySize = 2048;
int keyExponent = 65537;
BIGNUM *bn;
. . .
bn = BN_new();
BN_set_word(bn, keyExponent);
rsa = RSA_new();
RSA_generate_key_ex(rsa, keySize, bn, nullptr);
FILE* fp = fopen(fileName, "w");
PEM_write_RSAPrivateKey(fp, rsa, EVP_des_ede3_cbc(), passphrase, 10, nullptr, nullptr);
此代码按预期工作,但现在我被要求在没有密码保护的情况下存储私钥。有没有办法让 function PEM_write_RSAPrivateKey
不使用密码?我尝试的一种选择是按如下方式更改函数调用:
outcome = PEM_write_RSAPrivateKey(fp, rsa, EVP_des_ede3_cbc(), nullptr, 0, nullptr, nullptr);
但这会提示用户输入密码(这与函数 PEM_write_RSAPrivateKey 的文档中所述完全相同)。我还尝试使用 returns 零(表示没有密码)的密码回调,但这会导致 PEM_write_RSAPrivateKey
返回错误。
我还可以做些什么来将私钥存储在没有密码的 PEM 文件中?我认为这一定是可能的,因为我可以使用 openssl 命令来完成它,例如:openssl genrsa -out tmsPrivKey.pem 2048
。
第三个参数是用于加密私钥的加密密码。因此,您需要做的就是将 nullptr 传递给函数。
例如
outcome = PEM_write_RSAPrivateKey(fp, rsa, nullptr, nullptr, 0, nullptr, nullptr);
The PEM functions which write private keys take an enc parameter which specifies the encryption algorithm to use, encryption is done at the PEM level. If this parameter is set to NULL then the private key is written in unencrypted form.