Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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 字节数组中的椭圆曲线公钥_Java_Cryptography_Public Key Encryption - Fatal编程技术网

Java 字节数组中的椭圆曲线公钥

Java 字节数组中的椭圆曲线公钥,java,cryptography,public-key-encryption,Java,Cryptography,Public Key Encryption,我正在使用FlexiEC提供程序生成椭圆曲线公钥。然后我将密钥转换为字节数组。之后,我想从这个字节数组中获取这个公钥的一个实例。每当我这样做的时候,我都会得到一个例外 代码如下: import java.security.KeyPair; import java.security.KeyFactory; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.Publ

我正在使用FlexiEC提供程序生成椭圆曲线公钥。然后我将密钥转换为字节数组。之后,我想从这个字节数组中获取这个公钥的一个实例。每当我这样做的时候,我都会得到一个例外

代码如下:

import java.security.KeyPair;
import java.security.KeyFactory;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.Security;

import javax.crypto.Cipher;

import de.flexiprovider.common.ies.IESParameterSpec;
import de.flexiprovider.core.FlexiCoreProvider;
import de.flexiprovider.ec.FlexiECProvider;
import de.flexiprovider.ec.parameters.CurveParams;
import de.flexiprovider.ec.parameters.CurveRegistry.BrainpoolP160r1;
import de.flexiprovider.pki.X509EncodedKeySpec;

[...]

KeyPairGenerator kpg = KeyPairGenerator.getInstance("ECIES", "FlexiEC");
CurveParams ecParams = new BrainpoolP160r1();
kpg.initialize(ecParams, new SecureRandom());
KeyPair keyPair = kpg.generateKeyPair();

byte[] pubKey = keyPair.getPublic().getEncoded();

X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(pubKey);
KeyFactory keyFactory = KeyFactory.getInstance("ECIES", "FlexiEC");
PublicKey pk = keyFactory.generatePublic(pubKeySpec);
例外情况是:

Exception in thread "main" de.flexiprovider.api.exceptions.InvalidKeySpecException: java.lang.RuntimeException: java.security.InvalidAlgorithmParameterException: Caught IOException("Unknown named curve: 1.3.36.3.3.2.8.1.1.1")
at de.flexiprovider.ec.keys.ECKeyFactory.generatePublic(ECKeyFactory.java:205)
at de.flexiprovider.api.keys.KeyFactory.engineGeneratePublic(KeyFactory.java:39)
at java.security.KeyFactory.generatePublic(KeyFactory.java:328)
at com.test.App.test(App.java:68)
at com.test.App.main(App.java:76)
如何从字节数组中正确恢复密钥?

我有一些“ECIES”、“FlexiEC”代码,可供您参考。以下是链接:

如果这有帮助的话,这要归功于owlstead,他为我回答了这个问题,使我能够完成实现