【问题标题】:Generate private RSA private key and set pass-phrase programmatically以编程方式生成私有 RSA 私钥并设置密码
【发布时间】:2013-09-28 06:29:39
【问题描述】:

我正在尝试生成 RSA 私钥并以编程方式为其设置密码。

使用以下代码,我可以生成一个没有密码的未加密密钥,没问题:

if (!PEM_write_PrivateKey(priv_f, key_p, NULL, NULL, 0, 0, NULL)) {
    fprintf(stderr, "Write private key failed\n");
    return -1;
}

但是使用这段代码,我不断收到写私钥失败的错误:

if (!PEM_write_PrivateKey(priv_f, key_p, EVP_des_ede3_cbc(), NULL, 0, 0, passphrase)) {
    fprintf(stderr, "Write private key failed\n");
    return -1;
}

我正在尝试遵循手册页 here 上的代码。有什么办法可以从错误中获取更多信息? Errno 始终为 0。谢谢!

【问题讨论】:

    标签: c openssl rsa private-key pem


    【解决方案1】:

    通过添加以下代码并对 PEM_write_PrivateKey 参数稍作改动,我得到了它的工作。

    void init_openssl(void)
    {
        if (SSL_library_init()) {
            SSL_load_error_strings();
            OpenSSL_add_all_algorithms();
            ERR_load_crypto_strings();
            RAND_load_file(_RAND_FILENAME, _RAND_LOADSIZE);
        } else {
            exit(EXIT_FAILURE);
        }
    }
    

    还有

    if (!PEM_write_PrivateKey(priv_f, key_p,EVP_aes_256_cbc(),
                              (unsigned char*)passphrase,(int)strlen(passphrase), NULL, NULL)) {
        fprintf(stderr, "Write private key failed\n");
        handle_openssl_error();
        return -1;
    }
    

    【讨论】:

    猜你喜欢
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多