我在理解用于将密钥加载到RSA中的函数时遇到一些麻烦。
我从本地数据库中获取字符串形式的密钥:
-----开始公钥----- migfma0gcsqgsib3dqebaquaa4gnadcbiqkbgqdcz4npasjgxrcv8fwqcrdw + cze 76l3inzil3mquizvuyyn5heqqsrvg7 / 4mu1czc5fghcuk2pbfjgk9ev3xz6soxpk pkhkxot87xgkmi1hulszcyouhvrtgkgcbk / kuktqozklgbolxf + cxigdptpgareg DP + 6ieuziwsfpjrkjwidaqab -----结束公钥-----
然后我尝试这样的事情(在objective-c中):
long len = [key length];
const unsigned char *p = (unsigned char *)[key UTF8String];
RSA *r = d2i_RSA_PUBKEY(NULL, &p, len);
总是回来null所以我在那里做错了。我已经尝试过其他一些东西,但我想我错过了它。最终目标是从我的公钥创建一个RSA,然后使用类似
的东西RSA_public_encrypt ( 1, hash, secret, r, RSA_PKCS1_OAEP_PADDING );
要加密哈希,但我仍然不能加载我的密钥:)感谢任何帮助。
谢谢。
答案 0 :(得分: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);