Java 从Bouncy Castle中的字节[]获取ECPoint/ECPublicKeyParameters
到目前为止,我已经设法在bouncy castle的轻量级API中生成了一个ECDHE对。但是,我在尝试从字节[]重新创建公钥时遇到问题 由于ECPublicKeyParameters对象只有一个方法getQ(),因此我假设这就是重建密钥所需的全部内容。其他参数如所用曲线(P-521)保持不变 我正在做以下工作:Java 从Bouncy Castle中的字节[]获取ECPoint/ECPublicKeyParameters,java,bouncycastle,public-key-encryption,elliptic-curve,diffie-hellman,Java,Bouncycastle,Public Key Encryption,Elliptic Curve,Diffie Hellman,到目前为止,我已经设法在bouncy castle的轻量级API中生成了一个ECDHE对。但是,我在尝试从字节[]重新创建公钥时遇到问题 由于ECPublicKeyParameters对象只有一个方法getQ(),因此我假设这就是重建密钥所需的全部内容。其他参数如所用曲线(P-521)保持不变 我正在做以下工作: AsymmetricCipherKeyPair kp = kpgen.generateKeyPair(); //ECDHE Key Generator ECPublicKeyPara
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对象。对于可能涉及的任何人,我通过使用PublicKeyFactory和SubjectPublicKeyInfoFactory对密钥进行编码和解码来解决此问题 使用:
byte[] key = SubjectPublicKeyInfoFactory.createSubjectPublicKeyInfo(pubKey).getEncoded();
我能够得到密钥的原始字节
并使用:
ECPublicKeyParameters bpubKey = (ECPublicKeyParameters)PublicKeyFactory.createKey(key);
我能够重新创建公钥