我正在嘗試使用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