数字签名算法ECDSA
来源:互联网 发布:红梅白雪知歌词 编辑:程序博客网 时间:2024/05/17 02:47
一 介绍
ECDSA:Elliptic Curv Digstal Signature Algorithm 椭圆曲线数字签名算法。
速度快、强度高、签名短
二 参数说明
三 代码实现
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;public class ImoocECDSA {private static String src = "cakin security ecdsa";public static void main(String[] args) {jdkECDSA();}public static void jdkECDSA() {try {//1.初始化密钥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[] result = signature.sign();System.out.println("jdk ecdsa sign : " + Hex.encodeHexString(result));//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(result);System.out.println("jdk ecdsa verify : " + bool);} catch (Exception e) {e.printStackTrace();}}}
四 实现效果
jdk ecdsa sign : 3044021f6662929ed21c7deb2d160be1956a0b916264cbe687210b923b17c4aff8414d022100ced1d6ff766e7ead8b307b13d53d1bb49fc51b232646f4ed3d37a296e8a5f5bc
jdk ecdsa verify : true
五 应用场景
阅读全文
0 0
- 数字签名算法--3.ECDSA
- 数字签名算法ECDSA
- ECDSA数字签名算法
- 数字签名算法ECDSA
- ecdsa 椭圆曲线数字签名算法
- 数字签名ECDSA
- 【比特币】椭圆曲线数字签名算法-ECDSA
- 数字签名(3):ECDSA
- 数字签名--ECDSA实现
- 数字签名– RSA、DSA、ECDSA
- SM2算法第十五篇:ECDSA数字签名算法的C语言实现
- SM2算法第二十五篇:ECDSA数字签名算法原理与实现
- java RSA/DSA/ECDSA实现数字签名
- 数字签名加密算法(RSA、DSA、ECDSA)
- java RSA/DSA/ECDSA实现数字签名
- ECDSA算法实现源码
- DSA和ECDSA算法
- 数字签名算法
- 主成分分析(PCA)原理详解
- IIS6.0 asp.asa.cer.cdx. 原理
- 【深度学习】CNN中的Convolution有什么作用
- BAT机器学习面试题及解析(261-265题)
- 程序员如何做到年薪60万?
- 数字签名算法ECDSA
- 【Maven实战】之版本管理
- python可变不可变数据类型错误
- selenium+python自动化测试(2)
- Java mysql(1)----jdbc连接mysql之url书写
- JAVA学习笔记三
- import numpy 和 from numpy import * 的区别
- 大数据WEB阶段(十五)JavaEE三大核心技术之过滤器
- 金融