Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从mem读取OPENSSL RSA公钥_Openssl - Fatal编程技术网

从mem读取OPENSSL RSA公钥

从mem读取OPENSSL RSA公钥,openssl,Openssl,尝试从mem加载公钥时出现问题。 在我使用PEM_read_RSA_PUBKEY从磁盘加载密钥之前。但由于这将使Cracker获取我的公钥太容易了。我想从CString而不是文件加载它。 我试着这样做: CString csPubKey = L"-----BEGIN PUBLIC KEY-----" L"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/g+aYSWhuJc4J30n5U5iC9cwr" L"N7Su2NeO/Ewu

尝试从mem加载公钥时出现问题。 在我使用PEM_read_RSA_PUBKEY从磁盘加载密钥之前。但由于这将使Cracker获取我的公钥太容易了。我想从CString而不是文件加载它。 我试着这样做:

    CString csPubKey = 
    L"-----BEGIN PUBLIC KEY-----"
    L"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/g+aYSWhuJc4J30n5U5iC9cwr"
    L"N7Su2NeO/EwubqjypfWY8W9B+lfNk9q2CoTyb5LtZI19rLCY8yrX1vIKLMRzHNri"
    L"LSXNAk+tWsnf7qupJep6mn5EeAPV7AG1p1i7txvoWBf289YI8wlGsr0DMUIfQxAW"
    L"hSwlRYqJ64wRx7sXMQIDAQAB"
    L"-----END PUBLIC KEY-----";

BIO *bio = BIO_new_mem_buf(CW2A(csPubKey.GetBuffer()),csPubKey.GetLength());


if(PEM_read_bio_RSA_PUBKEY(bio,&pRSAPublicKey, 0, 0) == NULL)
{
    CStringA err = ERR_error_string(ERR_get_error(), NULL);
    //assert(false);
    return "";
}
当PEM_读取bio_RSA_PUBKEY时,我得到错误:0906D06C:lib(9):func(109):reason(108)。 在谷歌,它说这是关于没有起跑线。有人知道我做错了什么吗

PEM_read_bio_RSA_PUBKEY。。。在谷歌,它说这是关于没有起跑线

这是一条很宽的线。首先将其转换为窄字符串

您还应该从
sPubKey.GetBuffer()
释放缓冲区


。。。因为这会让Cracker很容易获得我的公钥


这是一个公开密钥。它意味着可以自由分发。

我使用CStringA并修复了这个问题,我不知道为什么CW2A不能像以前一样工作。

我想我已经在CW2A(csPubKey.GetBuffer()中转换了它?我认为窄字符串与Ansi相同,因此CW2A适用于此?我已经阅读了其他地方的内容,因此您需要在每行末尾添加
\n
,但如果这是问题所在,则使用
CStringA
无法解决问题。