我是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();
}
原因是密钥规范中的代码无法正常工作,因此无法在ECC中使用。所以我找到了如何ECPublicKeySpec
在ECC中使用。在这里,它有很好的解释。https://bitcointalk.org/index.php?topic=2899.0;wap2谢谢。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句