RSA解密消息

RSA decrypt message

当我尝试解密加密的消息时,我的程序失败了。我的代码:

char   *pri_key[] = "some key"; // ---> some key, that i've got from server

RSA *rsa;
BIO *keybio;
keybio = BIO_new_mem_buf(pri_key, strlen(pri_key));
rsa = PEM_read_bio_RSAPrivateKey(keybio, &rsa, NULL, NULL);

// Decrypt it
// Encoded message is in buff
char *decrypt = new char[BUFF_SIZE];
int decrypt_len = RSA_private_decrypt(BUFF_SIZE, (unsigned char*)buff, (unsigned char*)decrypt,
    rsa, RSA_PKCS1_OAEP_PADDING); // ------> it fails here

有什么问题?

我发现了问题。

添加错误检查后,出现错误“3132:error:0906D06C:lib(9):func(109):reason(108):.\crypto\pem\pem_lib.c:703:Expe cting:任何私钥。

在谷歌搜索和阅读手册后,我了解到我的私钥初始化错误。我需要在私钥的每一行之后添加 \n(在每个第 64 个符号之后)。所以char*里面的key一定是这样的:

char *pri_key = "-----BEGIN RSA PRIVATE KEY-----\n\
MIIEogIBAAKCAQEAnwOBG9cKqGZhEv3ikSQjrpdEY/qDOB3ZOjoiIT/XJIoPAmXh\n\
i8aAPJ1XgT1enXltvvCmwQDMmcjyAwgKv/215jWN9bcBmRSgTbyJyYCJS4BOs46G\n\
8UKuclXt9JSQGi7ajySdv24qaB+LcchddGIEBtBIWhDx6Je1UxfV9IWk3Ai5zZ5M\n\
e5Ux3mHQz5xUwPncZTN5jBQ3iJTw0Q+NCbHrNZbWKgWEaWJrTGguH1IYVVUcf7qi\n\
PSIPe8jIZeVNVrBkIpX2QYLW2PZxdPPDmFg7dqsTeQRjLwr6grv3arNySMYiU5kQ\n\
VLRyri9FSR5IaqH6tGxjfcNU+7cW3u7gDyD/LwIBAwKCAQBqAlYSj1xwREC3U+xg\n\
wsJ0ZNhCpwIlaTt8JsFrf+TDBrSsQ+uyhFV9vjpWKOm+UPPUoG8rVd2720wCBVx/\n\
/nlEI7P5JKu7YxWJKFvbqwYyVYnNCa9Lgcmhjp6jDbVmyecKGGkqSXGav7JL2uj4\n\
QVgEitrmtfabD843ZTlNrm3oBMQF0rLU888eT/InM424ny0EFjxTARPpEFq0F7jj\n\
95y4FVlHKdAMIhyyUuBe9OEWyl9ALPiIlQNb+5ty1VxF7ZVEJzfwESUzwT9bI+Hj\n\
pYiZAe9vsK/mBYCBJ3X2+qtX56cmCIpk2jnkHFYMnZBrwma108tt3l6Z9kQXBQt2\n\
PNWbAoGBANDyJYvExXkHcxSaElrilWpOG+0cNEGjevgLL54wtQ7e9xGGdJGIo3n4\n\
GmSLrAa9TKrxIMFrKAH/TLEvKyCYnCTpp6lVVRikwUi01rSnm0J0mIZo5VQblgQO\n\
GLrb2yvhFhTV7/WHUFsY7cOQy5EHQKoDYwxkmM31TVQr5A5pbmbVAoGBAMLSvLR3\n\
YgIpdtD6vKVJda6Q9jHzXlgHgXC3vFmDCXFCf7640jrOi8ZI0XkFNr/12OKuVmwF\n\
Gohygq4KeiJVL99Ss3kEFAZmk0m3ZzwbRKwcj6Xolgc6bLWy6AucYEVj1JLEnEs2\n\
HMC/FwClZl7BvbagS6X0XPkfeFyQg0B0V1fzAoGBAItMGQfYg6YE92MRYZHsY5w0\n\
Ep4SzYEXp1AHdRQgeLSUpLZZowuwbPv6vEMHyAR+MxygwIDyGqv/iHYfchW7EsNG\n\
b8Y442XDK4XN5HhvvNb4Za7wmOK9Dq1euyc9PMfrZA3j9U5aNZIQnoJgh7YE1cas\n\
7LLtuzP43jgdQrRGSZnjAoGBAIHh0yL6QVbGTzX8fcOGTnRgpCFM6ZAFAPXP0uZX\n\
W6DW/9R7NtHfB9mF4PtYzyqj5ex0OZ1YvFr3AclcUWw4ypThzPtYDVmZt4Z6RNK8\n\
2HK9tRlFuVom8yPMmrJoQC5CjbctvYd5aIB/ZKsY7unWfnnAMm6i6KYU+uhgV4BN\n\
j4/3AoGACTKWj1cZCKLV7GUnghNooNV5YvOu3xOKGWgoNuey9C6+onFWGXwYbb+N\n\
ArIZraExbCm6OHYfMoR7Zb4rgj5RY9zNoELYQnuTk5MnQJCtzEqEolUuXVAUP8Vn\n\
Xzuh6GkK20/n4PKyIj2ZjN6b534GNPPJYpohhejjdOyetUz4cUI=\n\
-----END RSA PRIVATE KEY-----\n";

谢谢大家的帮助!