我是java ecc加密的新手。所以我从java卡获得ECC公钥数据阵列。大小为49字节长。所以我需要生成Eccpublic密钥。所以我创建了公钥。但它给出了错误:
java.security.spec.InvalidKeySpecException:无法识别编码的密钥规范
这是我的代码。如何使用数据数组生成Eccpublickey?
byte[] pub = new byte[] {
/*(Public data) 49 length byte ARRAY
*/
};
System.out.println("Length :" + pub.length);
X509EncodedKeySpec ks = new X509EncodedKeySpec(pub);
KeyFactory kf;
try {
kf = KeyFactory.getInstance("ECDH");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return;
}
ECPublicKey remotePublicKey;
try {
remotePublicKey = (ECPublicKey) kf.generatePublic(ks);
} catch (InvalidKeySpecException e) {
e.printStackTrace();
return;
} catch (ClassCastException e) {
e.printStackTrace();
return;
}
System.out.println(remotePublicKey);
} catch (Exception e) {
e.printStackTrace();
}
答案 0 :(得分:0)
原因是代码无效,keyspec无法在ECC中使用。所以我发现如何在ECC中使用ECPublicKeySpec
。在这里它有很好的解释。https://bitcointalk.org/index.php?topic=2899.0;wap2谢谢。