尝试从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 "";
}
我得到错误错误:0906D06C:lib(9):func(109):当PEM_read_bio_RSA_PUBKEY时的原因(108)。 在Google上,它表示这不是起跑线。谁知道我做错了什么?
答案 0 :(得分:0)
PEM_read_bio_RSA_PUBKEY ...在Google上它说这不是起跑线。
它是一个宽字符串。首先将它转换为一个窄字符串。
您还应该从sPubKey.GetBuffer()
释放缓冲区。
...因为这会让Cracker太容易接受我的公钥。
它是一把公钥。它意味着自由分发。
答案 1 :(得分:0)
我使用CStringA并修复了问题,我不知道为什么CW2A不能同样工作。