3

지금까지 성의 경량 API를 사용하여 ECDHE 쌍을 생성했습니다. 그러나 바이트 []에서 공개 키를 다시 만들려고 할 때 문제가 있습니다.Bouncy Castle에서 byte []로부터 ECPoint/ECPublicKeyParameters 받기

ECPublicKeyParameters 객체에는 getQ() 메소드 하나만 있기 때문에 키를 재구성하는 데 필요한 모든 것이 있다고 가정합니다. 사용 된 곡선 (P-521)과 같은 다른 매개 변수는 일정하게 유지됩니다.

내가 뭐하는 거지 다음) (공개 키 pubKey의 원시 바이트를 얻을 수있는 또 다른 방법이없는 한

AsymmetricCipherKeyPair kp = kpgen.generateKeyPair(); //ECDHE Key Generator 

ECPublicKeyParameters pubKey = (ECPublicKeyParameters)kp.getPublic(); 
byte[] aPubKeybytes = pubKey.getQ().getEncoded(false); //Should I set to true or false? 

, 나는 방법 getQ를 호출하지 않고 바이트를 얻을 수있는 방법이 표시되지 않습니다 ECPoint 객체를 반환합니다.

나의 질문은 탄력성의 경량 API를 사용하여 ECPoint 개체로 바이트 []를 재구성하는 방법입니다. 또는 원래 pubKey 객체에서 파생 된 바이트 배열을 사용하여 전체 ECPublicKeyParameter 객체를 재구성하는 방법이 더 좋습니다.

답변

6

누구에게나 PublicKeyFactory 및 SubjectPublicKeyInfoFactory를 사용하여 키를 인코딩하고 해독함으로써이 문제를 해결했습니다.

사용 :

byte[] key = SubjectPublicKeyInfoFactory.createSubjectPublicKeyInfo(pubKey).getEncoded(); 

내가 키의 원시 바이트를 얻을 수있었습니다.

및 사용은 :

ECPublicKeyParameters bpubKey = (ECPublicKeyParameters)PublicKeyFactory.createKey(key); 

나는 공개 키를 재현 할 수 있었다.