2

我很难理解使用什么函数将我的密钥加载到 RSA 中。

我从本地数据库中以这样的字符串形式获取密钥:

-----begin public key----- migfma0gcsqgsib3dqebaquaa4gnadcbiqkbgqdcz4npasjgxrcv8fwqcrdw+cze 76l3inzil3mquizvuyyn5heqqsrvg7/4mu1czc5fghcuk2pbfjgk9ev3xz6soxpk pkhkxot87xgkmi1hulszcyouhvrtgkgcbk/kuktqozklgbolxf+cxigdptpgareg dp+6ieuziwsfpjrkjwidaqab -----end public key-----

然后我尝试这样的事情(在objective-c中):

long len = [key length];
const unsigned char *p = (unsigned char *)[key UTF8String];
RSA *r = d2i_RSA_PUBKEY(NULL, &p, len);

r 总是返回 null 所以我在那里做错了什么。我已经尝试了其他一些东西,但我想我只是想念它。最终目标是从我的公钥创建一个 RSA,然后使用类似的东西

RSA_public_encrypt ( 1, hash,    secret,     r, RSA_PKCS1_OAEP_PADDING );

加密哈希,但我一直在加载我的密钥:) 任何帮助表示赞赏。

谢谢你。

4

1 回答 1

3

经过一天的头撞墙后,我终于找到了解决方案。我在存放钥匙时不小心把钥匙小写了,这并没有帮助......

无论如何,这就是我所做的,假设您的密钥位于名为 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);
于 2012-09-10T01:20:47.833 回答