从mem读取OPENSSL RSA公钥
尝试从mem加载公钥时出现问题。 在我使用PEM_read_RSA_PUBKEY从磁盘加载密钥之前。但由于这将使Cracker获取我的公钥太容易了。我想从CString而不是文件加载它。 我试着这样做:从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
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
无法解决问题。