2017-03-21 2 views
0

openssl을 사용하여 개인 키를 사용하여 메시지의 암호를 해독하려고합니다. 나는 그것이 작동하지 않는 encapsullation 헤더 (-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----)없이 동일한 키를하려고 할 때 다음과 같은 형식OpenSSL에 캡슐화 헤더가없는 Base64 개인 키 읽기

-----BEGIN RSA PRIVATE KEY----- 
MIICXgIBAAKBgQDDEOX/tFJZrgR0dtTN2/jgPAJjWKE68aw8ayYaGn9fo1sJAE3C 
uH6Ym3hu775Enfd5DhtJ38g8RCFLzGVP/LW6n4+LsKS5HRZTGcDkpME0sVoLHLZd 
w8z4xZe5h+lT0jwkap5BNyHJCSddipxzjQIEtW+w8V6BkKkFw6UYN1Xn5QIDAQAB 
AoGAUeS0Ssfvksrl/+crrElfkPRgpEi/V7nCb5Mkae0Z8JLqUzsXalp+e585zolE 
PhZ7oQz1E+ypafPIbsQe/JfByx3itUk7J8+bZO4TpE8n5Afz8EdZLIqJU11MoafH 
mWYYWsoMdymgxasuu0ygyeswP42/aw1M+qQgoWBSoPtgLrkCQQDsygWQRI868JKJ 
OXzeKV6HTKjGXg37Zm050UaPk2a8inGk6F5RqH1+IZ4istrlcJTpJTuQCsVHJ+SQ 
nLveL09vAkEA0uRPeSdXbi92AR/5fj2Xh2APerYjRgK11nh4QEiqbmKyNdW7r9zb 
tIQiL9f4AXvcwIVnSWVgiTCwWOa9w8lT6wJBAOMlWPjwC8YqiSeCMjqbzMZVz4Gb 
MCZ+N0FDdEC+0csDs8jR78i9rMSWUzBOCpYWzYJp6R1gd6auqh/feojFMZkCQQCO 
Gkly2Y+QL2rUVzdGWTpBffjwNsqN4kWkvohIyK4Os3Jh1CMj3S4t9NsUYfI7Dbsx 
/rIaQrVJvAUX4mL8Ci0BAkEAuAZBSTmd7MQybVlWCP1AVvlMyW1CV/Mts4tLsGO5 
NRMuXY0CrQaO69MW4nuHCSmshBcNB7ahGxYYYMaHmem3QQ 
-----END RSA PRIVATE KEY----- 

에서 개인 키를 사용할 때 내 구현은 잘 작동합니다.

이러한 헤더는 키에 필수입니까?

OpenSSL의 API를 사용해야하는 헤더없이 키를 사용하려면 어떻게해야합니까?

+0

똑같이 쉽게 사용할 수있는 다른 API는 없습니다. 왜 이것이 문제입니까? 머리글과 바닥 글을 쉽게 추가하거나 제거 할 수 있어야합니다. –

+0

이것은 문제가되지 않습니다. 내 고객 헤더없이 입력으로 키를 제공합니다. 그래서 어떤 API와 RSA 구조를 구축 찾고 있습니다. 머리글과 바닥 글을 포함하도록 strcat()을 수행 할 수 있습니다. 하지만 이것은 하드 코드 된 것으로 보입니다. 대체 키를 확인하는 이유가 무엇입니까 –

+1

[openssl을 사용하여 RSA 개인 키를 생성하는 방법] (http://stackoverflow.com/a/30493975/608639)을 참조하십시오. 다른 인코딩 형식에 대한 정보를 제공합니다 . PEM이 인코딩 된 경우에는 캡슐화 헤더가 필요합니다. 헤더를 원하지 않으면 ASN.1/DER을 사용하십시오. 당신은 약간 unusal 중간 - Base64 ASN.1/BER로 인코딩 싶어요. 보통 PEM 만 사용하면됩니다. 그러나 Headers, Base64 디코드를 무시하고,'d2i_RSAPrivateKey_bio'를 사용하여 읽습니다. – jww

답변

0

키 형식의 형식은 PEM으로 인코딩 된 키의 머리글과 바닥 글에 의해 정의됩니다. 내부적으로 PKCS # 1 개인 키입니다. 형식에 대한 자세한 내용은 this Q/A 또는 ASN.1 디코딩 키 here을 참조하십시오.

모든 정보가 기본 64 인코딩에 있지만 중간 구현에서는 구조의 유형을 알 수 없기 때문에 직접 구문 분석 할 수 없습니다.

그러나 기본 64 디코딩 할 수 있으며 OpenSSL에서 키로 사용할 수 있습니다. 이 경우에 -inform DER 또는 이와 유사한 값을 지정해야 할 수도 있습니다.