从Modulus&中初始化公钥使用OpenSSL的指数

时间:2011-10-21 03:07:12

标签: objective-c encryption openssl rsa

在给定API模数和指数的情况下尝试生成RSA公钥。我在iOS 4.2上使用OpenSSL。

手动生成公钥是一个选项(见下文)但是我不确定如何在模数中包含指数逻辑

-----BEGIN PUBLIC KEY-----
Modulus from API
-----END PUBLIC KEY-----

根据@James评论,我可以写公共pem但是获得空白私钥。这是我的代码:

char szModulus = "1162" ;
char *szExp = "827655" ;
RSA* rsa = RSA_new();
int ret = BN_hex2bn(&rsa->n,szModulus) ;
ret = BN_hex2bn(&rsa->d,szExp) ;
FILE *fp = fopen("/Users/ysi/Desktop/privateKey.pem", "wb"); 
PEM_write_RSAPrivateKey(fp, rsa, NULL, NULL, 0, 0, NULL);

1 个答案:

答案 0 :(得分:3)

要执行此操作,请确保已链接OpenSSL库(此处为http://code.google.com/p/ios-static-libraries/说明)

链接后,您可以访问多个BIGNUM转换器。我使用BN_hex2bn方法将模数转换为十六进制,将十六进制字符串保存为'exponent'

然后创建BIGNUM结构并使用RSA_public_encrypt加密

RSA *rsa = NULL;

rsa->n = BN_new();
BN_copy(rsa->n,modulus);   
rsa->e = BN_new();
BN_copy(rsa->e,exponent);     
rsa->iqmp=NULL;
rsa->d=NULL;
rsa->p=NULL;
rsa->q=NULL;

祝你好运!