2011-10-21 3 views
3

API 모듈 및 지수를 사용하여 RSA 공개 키를 생성하려고합니다. iOS 4.2에서 OpenSSL을 사용하고 있습니다. 수동으로 공개 키를 생성OpenSSL을 사용하여 Modulus & Exponent에서 공개 키 초기화

는 옵션입니다하지만 난 @ 제임스 의견을 바탕으로 계수

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

에 지수 로직을 포함하는 방법을 잘 모르겠어요 (아래 참조), 나는 수 있어요 공개 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

* "... 그러나 비어있는 개인 키를 얻는 중 ..."* -'RSA *'는 공개 키와 개인 키의 역할을 모두 수행 할 수 있습니다. 공개 키 부분 만'RSA * '에 제공했습니다. 개인 키 부분은 공개 키 부분에서 마술처럼 나타나지 않습니다. 그렇게 할 수 있다면 대부분의 (전체?) Integer Factorization Cryptography (IFC)가 무너질 것입니다. – jww

답변

3

이 작업을 수행하려면 반드시에는 OpenSSL 라이브러리 (여기 http://code.google.com/p/ios-static-libraries/ 지침) 연결이 있는지 확인

일단 당신이 몇 가지의 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; 

행운을 빕니다를 사용하여의 bignum 구조체 및 암호화를 만드는 '지수'로 16 진수 문자열을 절약 BN_hex2bn 방법을 사용하여 진수로 계수를 설정!

관련 문제