C 为什么RSA_大小会崩溃?
我试图使用OpenSSL加密库,但它在一个调用中崩溃了,这是我所看到的每个示例中的一个主要部分。以下是它的设置方式:C 为什么RSA_大小会崩溃?,c,openssl,cryptography,C,Openssl,Cryptography,我试图使用OpenSSL加密库,但它在一个调用中崩溃了,这是我所看到的每个示例中的一个主要部分。以下是它的设置方式: BIO* bp = BIO_new_mem_buf(_publicKey, -1); // Create a new memory buffer BIO. RSA* pubKey = PEM_read_bio_RSA_PUBKEY(bp, 0, 0, 0); // And read the RSA key from it. unsigned char encryptedRand
BIO* bp = BIO_new_mem_buf(_publicKey, -1); // Create a new memory buffer BIO.
RSA* pubKey = PEM_read_bio_RSA_PUBKEY(bp, 0, 0, 0); // And read the RSA key from it.
unsigned char encryptedRandKey[RSA_size(pubKey)];
BIO_free(bp);
\u publicKey
是一个以null结尾的字符串,包含一个PEM格式的RSA密钥(使用----BEGIN XXX---
等等)。它在RSA\u size
中因访问错误而崩溃
如果我删除BIO\u free
,这无关紧要
有什么想法吗?谢谢 您需要检查
PEM\u read\u bio\u RSA\u PUBKEY()
的返回值,以确保它不为空。很可能是\u publicKey
的内容格式不太正确,因此publicKey
为空。尝试PEM\u read\u bio\r publicKey
而不是PEM\u read\u bio\u RSA\u publicKey
。谢谢你给我们提供了显而易见的提示!现在的问题是问题是什么,因为公钥是合法的。我能看到的唯一一件事是,也许新词不知何故被删除了。整个过程以XML形式从数据库返回,该元素到控制台的XML转储显示------BEGIN等的换行符。但是_publicKey的printf似乎没有新行。@奥斯卡-是的,OpenSSL需要PEM编码中的新行。请参阅和围绕答案展开的讨论。(很抱歉挖出一根旧线)。这没什么害处。谢谢JWW。