2011-09-12 2 views
1

개인/공용 RSA 키를 구성하는 데 필요한 구성 요소가 있습니다. N, E, D, P & Q. 필요한 경우 CRT의 다른 값을 도출 할 수 있습니다. 이 매개 변수를 사용하여 DER, PEM 또는 PKCS # 7에서 유효한 개인/공개 키를 생성하려면 어떻게합니까? 나는 그들 사이를 개조 할 수 있기 때문에 어느 것이 나에게 중요하지 않습니다. 이 값을 할당하고 유효한 파일을 쓰는 것을 지원하는 도구, 라이브러리, 스크립트 또는 프로그램을 찾고 있으므로 ASN.1에서 수백 페이지를 읽을 필요가 없습니다. 내가 본 모든 도구는 API에서이 사용 사례를 노출하지 않습니다.소수로부터 올바른 개인 키 (어떤 형식 으로든)를 생성하려면 어떻게해야합니까?

+0

영역 51에 따르면 라이브러리 사용에 관한 질문은 crypto.se에서 offtopic입니다. – APIHell

+0

어떤 언어입니까? 자바, C, 파이썬 ... 중요합니다. –

답변

0

OpenSSL (라이브러리)을 사용할 수 있어야합니다.

BIGNUM은 이라고 기재되어있다. 입력에 BIGNUM을 만드는 많은 함수가 있습니다 (형식에 따라 다름). BN_bin2bn이 가장 단순하지만 16 진수 또는 10 진수 입력도 지원됩니다.

RSA는 BIGNUM을 포함하는 구조입니다. 그 내용은 here입니다. 직접 (직접) 초기화 할 수 있습니다.

그런 다음 PEM 기능 중 하나 (here)를 사용하여 RSA 구조를 쓸 수 있습니다. 예를 들어, PEM_write_RSAPrivateKey은 개인 키가 들어있는 PEM 파일을 씁니다 (원한다면 암호화 할 수도 있습니다).

나는 위의 모든 작업을 수행하는 도구에 대해 알고 있지 않습니다. 또한 ASN.1은 그렇게 나쁘지 않습니다 (공용/개인 키는 INTEGER의 시퀀스입니다).

1

Java를 사용하는 경우, BigInteger의 계수와 지수 인수를 갖는 RSAPrivateKeySpec 클래스가 있습니다. P와 Q 소수 대신 N을 취하는 서브 클래스가 있습니다 (효율을 높이기 위해). 그런 다음 KeyFactory을 사용하여이 개체를 Key로 변환 한 다음 PKCS8EncodedKeySpec 또는 X509EncodedKeySpec과 같은 EncodedKeySpec 클래스로 변환 할 수 있습니다.

관련 문제