从Bouncy Castle的byte []获取ECPoint / ECPublicKeyParameters

时间:2013-10-26 11:06:49

标签: java bouncycastle public-key-encryption elliptic-curve diffie-hellman

到目前为止,我已经设法在充气城堡的轻量级API中生成ECDHE对。但是,我尝试从byte []重新创建公钥时遇到问题。

由于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的原始字节,否则我没有看到一种方法来获取字节而不调用返回ECPoint对象的方法getQ()。

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

1 个答案:

答案 0 :(得分:8)

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

使用:

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

我能够获得密钥的原始字节。

并使用:

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

我能够重新创建公钥。