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

4
到目前为止,我已经在Bouncy Castle的轻量级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()方法的情况下获得字节。

我的问题是如何使用弹性城堡轻量级API将byte[]重构为ECPoint对象。或者更好的方法是,如何使用从原始pubKey对象派生的某种字节数组重新构建整个ECPublicKeyParameter对象。

1个回答

9

致相关人士,我通过使用PublicKeyFactory和SubjectPublicKeyInfoFactory对密钥进行编码和解码来解决了此问题。

使用:

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

我能够获取密钥的原始字节。
并使用:
ECPublicKeyParameters bpubKey = (ECPublicKeyParameters)PublicKeyFactory.createKey(key);

我成功地重新生成了公钥。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接