数字签名算法ECDSA
2017-10-19 14:40
375 查看
import org.apache.commons.codec.binary.Hex; import org.bouncycastle.asn1.eac.ECDSAPublicKey; import java.security.*; import java.security.interfaces.DSAPrivateKey; import java.security.interfaces.DSAPublicKey; import java.security.interfaces.ECPrivateKey; import java.security.interfaces.ECPublicKey; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; /** * Created by pengchao on 2017/10/19. */ public class ImoocECDSA { private static String src ="imooc security ecdsa"; public static void main(String[] args) { jdkDSA(); } public static void jdkDSA(){ try { //初始化密钥 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC"); keyPairGenerator.initialize(256); KeyPair keyPair = keyPairGenerator.generateKeyPair(); ECPublicKey ecPublicKey = (ECPublicKey) keyPair.getPublic(); ECPrivateKey ecPrivateKey = (ECPrivateKey) keyPair.getPrivate(); //2.执行签名 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[] bytes = signature.sign(); System.out.println("jdk ecdsa sign:" + Hex.encodeHexString(bytes)); //3.验证签名 X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(ecPublicKey.getEncoded()); keyFactory = KeyFactory.getInstance("EC"); PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec); signature = Signature.getInstance("SHA1withECDSA"); signature.initVerify(publicKey); signature.update(src.getBytes()); boolean bool = signature.verify(bytes); System.out.println("jdk ecdsa verify :" + bool); } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- ECDSA数字签名算法及JAVA实现
- ecdsa 椭圆曲线数字签名算法
- 椭圆曲线数字签名算法(ECDSA)
- ECDSA数字签名算法
- 【比特币】椭圆曲线数字签名算法-ECDSA
- 数字签名算法_ECDSA
- SM2算法第十五篇:ECDSA数字签名算法的C语言实现
- SM2算法第二十五篇:ECDSA数字签名算法原理与实现
- 数字签名算法ECDSA
- 数字签名算法ECDSA
- PKI基础 二.PKI基础--3.公开密钥数字签名算法(签名)
- 数字签名算法(C#)
- 数字签名算法RSA_JJM
- Java实现RSA数字签名算法
- 数字签名算法DSA
- Warning: Permanently added the ECDSA host key for IP address '192.168.80.133' to the list o
- Fix "the ECDSA host key for 'your server' differs from the key for the IP address 'the ip'"
- 数字签名(3):ECDSA
- 数字签名算法中SHAwithRSA