我正在尝试使用OpenSSL加密库,它在我看到的每个示例中都是主食的调用中崩溃。下面是它是如何设置:为什么RSA_size会崩溃?
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);
_publicKey
是包含PEM格式的RSA密钥(与-----BEGIN XXX-----
等)空结束的字符串。它在RSA_size
中因访问不良而崩溃。
如果我删除BIO_free
并不重要。
任何想法?谢谢!
Duh。感谢指向明显的指针!现在的问题是问题是什么,因为_publicKey是合法的。我唯一能看到的就是换行符被删除了。整个事件从XML数据库返回,并且该元素到控制台的XML转储显示----- BEGIN等的换行符。但是_publicKey的printf似乎没有换行符。 – Oscar 2011-05-16 13:27:39
@Oscar - 是的,OpenSSL需要PEM编码中的新行。请参阅[无法在OpenSSL中设置公钥/私钥](http://stackoverflow.com/a/29929327/608639)以及围绕该答案的讨论。 (抱歉挖掘一个旧线程)。 – jww 2015-05-13 22:36:20
在这方面没有伤害。感谢JWW。 – Oscar 2015-05-15 23:36:21