3

到目前为止,我已经设法在充气城堡的轻量级API中生成ECDHE对。不过,我尝试从byte []重新创建公钥。从Bouncy Castle的字节[]获取ECPoint/ECPublicKeyParameters

由于ECPublicKeyParameters对象只有一个方法getQ()我假设这是所有需要重建密钥。其他参数如使用的曲线(P-521)保持不变。

我做了以下内容:

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? 

除非有另一种方式来获得公钥PUBKEY的原始字节,我不明白的方式来获得字节,而不必调用方法getQ()它返回一个ECPoint对象。

我的问题是如何使用bouncy castle的轻量级API将byte []重建为ECPoint对象。或者,更好的是,如何使用以原始pubKey对象派生的字节数组来重建整个ECPublicKeyParameter对象。

回答

6

对于任何可能引起关注的问题,我通过使用PublicKeyFactory和SubjectPublicKeyInfoFactory对密钥进行编码和解码来解决此问题。

使用:

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

我能拿到钥匙的原始字节。

和使用:

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

我能够重新公钥。

相关问题