数字签名ECDSA

来源:互联网 发布:three.js 全景图 插件 编辑:程序博客网 时间:2024/05/16 01:16
package com.imooc.security.ecdsa;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.NoSuchAlgorithmException;import java.security.PrivateKey;import java.security.PublicKey;import java.security.Signature;import java.security.interfaces.ECPrivateKey;import java.security.interfaces.ECPublicKey;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;import org.apache.commons.codec.binary.Hex;/** * 数字签名ECDSA * @author Bingo_Ge * */public class ECDSA {private static String src = "Imooc security ecdsa";public static void main(String[] args) {jdkECDSA();}public static void jdkECDSA() {try {//1.初始化密钥KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC");KeyPair keyPair = keyPairGenerator.generateKeyPair();ECPrivateKey ecPrivateKey = (ECPrivateKey) keyPair.getPrivate();ECPublicKey ecPublicKey = (ECPublicKey) keyPair.getPublic();//2.执行签名(ecPrivateKey)PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(ecPrivateKey.getEncoded());KeyFactory keyFactory = KeyFactory.getInstance("EC");PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);//签名Signature signature = Signature.getInstance("SHA1withECDSA");signature.initSign(privateKey);signature.update(src.getBytes());byte[] result = signature.sign();System.out.println("jdk ecdsa sign:" + Hex.encodeHexString(result));//3.验证签名(ecPublicKey)X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(ecPublicKey.getEncoded());//keyFactory = KeyFactory.getInstance("EC");PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);signature.initVerify(publicKey);signature.update(src.getBytes());boolean b = signature.verify(result);System.out.println("jdk ecdsa verify:" + b);} catch (Exception e) {e.printStackTrace();}}}

0 0
原创粉丝点击