java java曲线椭圆加密算法KeyPairGenerator

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java java曲线椭圆加密算法KeyPairGenerator相关的知识,希望对你有一定的参考价值。

//曲线椭圆加密算法
public static void ec() throws InvalidKeyException, SignatureException, NoSuchAlgorithmException {
    //Create a key pair
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC");
    SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
    keyGen.initialize(256, random);

    KeyPair keypair = keyGen.genKeyPair();
    PrivateKey privateKey = keypair.getPrivate();
    PublicKey publicKey = keypair.getPublic();

    System.out.println("private key: " + Arrays.toString(privateKey.getEncoded()));
    System.out.println("public key: " + Arrays.toString(publicKey.getEncoded()));



    String input = "hello world";

    //签名算法
    Signature signer = Signature.getInstance("SHA256withECDSA");

    //用私钥初始化签名
    signer.initSign(privateKey);
    //用签名更新输入
    signer.update(input.getBytes());
    byte[] sign = signer.sign();

    //打印得到的签名, 可以将此签名传给第三方
    System.out.println("input is:  " + input);
    System.out.println("Sign: " + Arrays.toString(sign));


    //第三方用公钥初始化,用签名做验证, 返回true表示验证正确
    Signature verifier = Signature.getInstance("SHA256withECDSA");
    verifier.initVerify(publicKey);

    //第三方的数据abc,用签名来验证是否和数据一致
    String input_again = "hello world";
    verifier.update(input_again.getBytes());
    boolean checkResult = verifier.verify(sign);
    System.out.println("Sign result : " + checkResult);
}

以上是关于java java曲线椭圆加密算法KeyPairGenerator的主要内容,如果未能解决你的问题,请参考以下文章

java实现ecc加密:通过AES获取公钥和私钥进行ECC加密

椭圆曲线加密算法简单理解

算法2_非对称加密算法之ECDSA(椭圆曲线数字签名算法)

椭圆曲线数字签名算法(ECDSA)

ActionScript的椭圆曲线加密

椭圆曲率算法不同曲线的安全性