2016-09-28 3 views
3

Java Bouncycastle을 사용하는 클라이언트와 Python RSA 라이브러리를 사용하는 키 서버간에 개인 키를 교환하는 데 어려움이 있습니다. PEM 형식은 REST를 통해 키를 전송하는 데 사용됩니다. 키 해독 할 수있는 키 서버 (필요한를 할 때 암호화 암호 변경) 나는 다음과 같이이 PEM과 PKCS # 1 또는 PKCS # 8 키를 기대하고, 공급하고 있습니다 :Bouncycastle 암호화 된 개인 키 PEM 출력 : RSA 개인 키와 개인 키

-----BEGIN PRIVATE KEY----- 
Proc-Type: 4,ENCRYPTED 
DEK-Info: DES-EDE3-CBC,ACCB65DDEB20F5AB 

EcU3fekuLeUc0viPJ20vAG+Jg1Igkvm+JTjnLmMBE6SwDS/hkf3KP0bFto7Pv6fJ 

을하지만 bouncycastle의 출력 나는 몇 가지 조사를 한 것처럼

-----BEGIN RSA PRIVATE KEY----- 
Proc-Type: 4,ENCRYPTED 
DEK-Info: DES-EDE3-CBC,ACCB65DDEB20F5AB 

EcU3fekuLeUc0viPJ20vAG+Jg1Igkvm+JTjnLmMBE6SwDS/hkf3KP0bFto7Pv6fJ 

, 나는이 PEM은 RSA 개인 키가 PKCS # 1을 사용하여 인코딩 된 키를 나타냅니다 BEGIN 시작하는 것을 알게 : JcePEMEncryptorBuilder과 JcaMiscPEMGenerator를 사용하여 약간 다른 BEGIN 문자열이 있습니다. 내가 JceOpenSSLPKCS8EncryptorBuilder 및 JcaPKCS8Generator를 사용하여 PKCS # 8 암호화 된 출력을 얻을하려고 할 때 다음과 같이

은 내가 PEM을 얻을 :

-----BEGIN ENCRYPTED PRIVATE KEY----- 
MIICrjAoBgoqhkiG9w0BDAEDMBoEFP+MLFFaKGC6J/37jF7wRgL3coZdAgIIAASC 
AoAdWVo4kAQ1S0stQZbzca7wL876nzlKfcOa4BKsCttPnFVPugJOvGDnATgUK5P/ 

그래서 제 질문은 다음과 같습니다과 출력에 PEM을 bouncycastle를 얻을 수있는 방법이있다 BEGIN PRIVATE KEY 형태의 암호화 된 개인 키 또는 잘못된 형식을 예상하는 파이썬 라이브러리입니까?

다음은 bouncycastle이 JcePEMEncryptorBuilder에서 PKCS # 1 또는 PKCS # 8을 사용하는지 여부를 파악할 수 없습니다. PrivateKeyInfo # getEncoded를 사용하고 있지만 PKCS 형식에 대한 문서가 명확하지 않습니다.

Bouncycastle 버전 : bcpkix-jdk15on 1.52

+0

나는 파이썬 lib가 PKCS # 1 형식의 RSA 키에 대한 올바른 헤더를 기대하지 않는다고 말할 것이다. BC에서 "RSA"를 제거하면 서버가이를 수락합니까? –

+0

나는 그것을 행운으로 실제로 시험해 보았다.) –

답변

0

그것은 파이썬 lib 디렉토리가 제대로 모든 표준 포맷을 처리되지 않은 밝혀졌다, 그래서 우리는 Bouncycastle가 보내는 형식을 지원하는 다른 파이썬 lib 디렉토리를 사용하여 고정.