在给定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);
答案 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;
祝你好运!