从C中的字符串加载openssl RSA密钥

从C中的字符串加载openssl RSA密钥,c,openssl,pem,C,Openssl,Pem,我在理解使用什么函数将密钥加载到RSA中时遇到了一点困难 我从本地数据库中获取字符串形式的密钥,如下所示: -----开始公钥------migfma0gcsqgsib3dqebaquaa4gnacbiqkbgqdcz4npasjgxrcv8fwqcrdw+cze 76L3inzil3MquizvuyN5HEQQSRVG7/4MU1CZC5FGHCUK2BFJGK9EV3XZ6SOXPK PKHKXOT87XGKMI1HULSZYOUHVRTGKGCBK/kuktqozklgbolxf+cxig

我在理解使用什么函数将密钥加载到RSA中时遇到了一点困难

我从本地数据库中获取字符串形式的密钥,如下所示:

-----开始公钥------migfma0gcsqgsib3dqebaquaa4gnacbiqkbgqdcz4npasjgxrcv8fwqcrdw+cze 76L3inzil3MquizvuyN5HEQQSRVG7/4MU1CZC5FGHCUK2BFJGK9EV3XZ6SOXPK PKHKXOT87XGKMI1HULSZYOUHVRTGKGCBK/kuktqozklgbolxf+cxigdptpgareg dp+6IEUZWSFPJRKJWIDAKAB -----结束公钥-----

然后我试着这样做(在objective-c中):

r总是返回空值,所以我在那里做错了什么。我试过其他一些方法,但我想我只是错过了。最终目标是从我的公钥创建RSA,然后使用

RSA_public_encrypt ( 1, hash,    secret,     r, RSA_PKCS1_OAEP_PADDING );
加密散列,但我无法加载密钥:)任何帮助都将不胜感激


谢谢。

在我的头撞了一天后,我终于找到了解决办法。当我储存钥匙时,我不小心把钥匙的外壳放低了,这对我没有帮助

不管怎样,我就是这么做的,假设您的密钥在一个名为key的NSString中,那么代码将为您加载它

const char *p = (char *)[key UTF8String];

BIO *bufio;
RSA *rsa;
NSUInteger byteCount = [key lengthOfBytesUsingEncoding:NSUTF8StringEncoding];

bufio = BIO_new_mem_buf((void*)p, byteCount);
RSA *myRSA = PEM_read_bio_RSA_PUBKEY(bufio, 0, 0, 0);

尝试使用
ERR\u get\u error()
获取有关OpenSSL错误的信息。谢谢,我得到了错误号218529960,google告诉我这意味着asn1编码例程:asn1\u CHECK\t len:错误标记
const char *p = (char *)[key UTF8String];

BIO *bufio;
RSA *rsa;
NSUInteger byteCount = [key lengthOfBytesUsingEncoding:NSUTF8StringEncoding];

bufio = BIO_new_mem_buf((void*)p, byteCount);
RSA *myRSA = PEM_read_bio_RSA_PUBKEY(bufio, 0, 0, 0);