2012-07-13 3 views
3

xcode의 응용 프로그램에서 암호화 된 문자열을 읽고 있는데, RSA 암호 해독을 사용하여 메시지를 디코딩하고 표시하는 기능을 작성해야합니다.Xcode Openssl RSA 암호 해독 기능이 필요합니다.

나는 어디서 시작해야 할까?

xcode에 Openssl을 준수했으며 openssl/rsa.h 파일을 사용하고 있습니다.

내가 함수를 사용하는 것을 시도하고있다 :

RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding); 

을하지만 그때 나는 함수가 단지 숫자가 아니라 실제 문자열을 반환에는 OpenSSL의 주요 사이트에 선가 읽은 것입니다. 나는 또한 paramenters가 통과 해야할지 전혀 모른다.

내가 찾은 유일한 참고 자료는 openssl/rsa.h 파일과이 파일에 포함 된 기능을 살펴 보는 것입니다.

지난 몇 시간 동안 조사를 해봤지만 아무 답변도 찾지 못했습니다.

암호화 된 문자열과 개인 키 (파일 또는 하드 코드 사용)를 전달할 수있는 단순한 함수가 있는지 궁금해서 암호 해독 문자열을 반환 할 수 있습니까?

Openssl을 Objective C 프로그래밍과 함께 사용하는 방법에 대한 안내서가 없습니까?

문제에 대한 추가 정보가 필요하면 알려주십시오.

미리 감사드립니다.

답변

1

Security Overview에 보안 변환 (openssl을 사용하지 않음)을 사용하는 Apple의 예를 살펴볼 수 있습니다.

행운을 빌어 사과 변형으로 할 수 있고 그 프로그램에 참여할 수 있습니다.

그렇지 않은 경우 또는 어떤 이유로 든 openssl을 사용하고 싶다면; openssl 소스에는 예제 파일 openssl-0.9.8t/apps/rsa.c이 포함되어 있습니다.이 파일은 선택적으로 잘라 내기 및 붙여 넣기가 가능하도록 해줍니다.

명령 줄에서 man RSA_private_decrypt을 실행하면 매뉴얼 페이지가 표시됩니다 (또는 Xcode에서 맨 페이지로 이동). 또는 http://www.openssl.org/docs/crypto/RSA_public_encrypt.html을 참조하십시오. 상기 용

사용 예 : 패딩 사람 쪽의 값 중 하나

unsigned char in[] = { 1, 2, ... byte array to decrypt }; 
// size of that in byte array 
int inlen = sizeof(in); 

// output buffer size depends on the key type. 
char * out = malloc(RSA_size(rsa)); 

int e = RSA_private_decrypt(inlen, in, out, rsa, RSA_PKCS1_PADDING); 

.

rsa의 값은 키를 설정하는 곳이기 때문에 초기화하기가 약간 복잡합니다. 그것을 채우는 다양한 방법의 예는 위의 rsa.c 파일을 확인 - 그것은 일반적으로 같은 것으로 요약된다 : load_key가있는 OpenSSL의 응용 예에서 빌려

EVP_PKEY *pkey = load_key(... , password,...); 
rsa = EVP_PKEY_get1_RSA(pkey); 

.

+0

죄송합니다. 아직 이해를 못하고 있습니다. in 배열에 필요한 해독 할 바이트 배열은 무엇입니까? 내가 초기화하고 RSA도 중요하니? 왜로드 키 기능이 암호 외에도 필요하며 rsa에 개인 키의 가치를 부여하는 이유는 무엇입니까? – user1431272

+0

ok - 바이트 배열 'in'은 "xcode의 응용 프로그램에서 암호화 된 문자열"에 해당합니다. 일단 암호 해독하면 새로운 바이트 배열을 얻습니다. 이제 'out'으로 들어갑니다. 암호문을 해독하려면 열쇠가 필요합니다. 이 경우 RSA 키는 'RSA 암호 해독'이라고 말합니다. –

+0

나는 당신의 명령 중 일부를 시도하고 있었고, 난이 오류가있어 : 아키텍처 I386에 대한 정의되지 않은 심볼 : "_RSA_size"에서 참조 : 를 - [의 ViewController barcodeData는 : 유형 :] ViewController.o "_RSA_private_decrypt"에에서 참조 : - [ViewController barcodeData : type :] in ViewController.o ld : 아키텍처 i386에 대한 기호를 찾을 수 없습니다. 어떻게 해결할 수 있을지 생각해보십시오. 여기에 몇 가지 추가 정보가 있습니다. http://stackoverflow.com/questions/11525706/openssl-mach-o-linker-error-for-architecture-i386-and-armv7 – user1431272