我正在尝试使用 OpenSSL 向应用程序添加 RSA 加密,但我无法加载证书。在我的应用程序中,公钥证书将从服务器分发,我需要获取该密钥并使用它来解密我的应用程序将扫描的加密条形码中的内容。
我之所以选择 OpenSSL 而不是安全库,是因为我还需要 ECDSA 验证,目前本机不支持该验证。
我尝试了多种方法来获取加载密钥。OpenSSL PEM_read_RSA_PUBKEY 方法需要一个文件指针。EXC_BAD_ACCESS
但是,当我运行下面的代码时,一旦我尝试访问密钥,它就会崩溃。
NSString * path = [[NSBundle mainBundle] pathForResource: @"public" ofType: @"pem"];
FILE *f = fopen([path cStringUsingEncoding:1],"r");
if (f == NULL)
NSLog(@"%@", [path stringByAppendingString:@" not found"]);
RSA *rsa = PEM_read_RSA_PUBKEY(f,NULL,NULL,NULL);
fclose(f);
NSLog (@"%d KeyCheck", RSA_check_key(rsa));
我从 OpenSSL 库中包含以下标头
#include <openssl/opensslv.h>
#include <openssl/crypto.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>
我还有其他 OpenSSL 方法,例如 MD5、Base64 编码/解码、SHA1 和 ECDSA 代码工作正常,它只是传入让我难过的 RSA 证书!
public.pem 密钥文件包含此密钥:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+ynZ7EvJ0F+IoGmlme/j/MpH4
7BxrIuDTJCOS99j82IL3Ww9Ubm28yOMHYPdi23WPDhR80ugaBWAnmqUZWvYKjqd4
Z4D0sJ0NVW3DDgZ4gS57zFqlvGgdVhzaVimfs7qDxIJ1o8GMuXWseZV2ZpmIjdnF
ZBol5zZTqNfk89RNnQIDAQAB
-----END PUBLIC KEY-----