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的椭圆曲线加密
椭圆曲率算法不同曲线的安全性