在java中生成ECPublicKey

时间:2013-08-26 05:01:43

标签: java keystore public-key-encryption

我是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();
}

1 个答案:

答案 0 :(得分:0)

原因是代码无效,keyspec无法在ECC中使用。所以我发现如何在ECC中使用ECPublicKeySpec。在这里它有很好的解释。https://bitcointalk.org/index.php?topic=2899.0;wap2谢谢。