Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Bouncy Castle中的字节[]获取ECPoint/ECPublicKeyParameters_Java_Bouncycastle_Public Key Encryption_Elliptic Curve_Diffie Hellman - Fatal编程技术网

Java 从Bouncy Castle中的字节[]获取ECPoint/ECPublicKeyParameters

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

到目前为止,我已经设法在bouncy castle的轻量级API中生成了一个ECDHE对。但是,我在尝试从字节[]重新创建公钥时遇到问题

由于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对象。

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

使用:

byte[] key = SubjectPublicKeyInfoFactory.createSubjectPublicKeyInfo(pubKey).getEncoded();
我能够得到密钥的原始字节

并使用:

ECPublicKeyParameters bpubKey = (ECPublicKeyParameters)PublicKeyFactory.createKey(key);
我能够重新创建公钥