ECDSA数字签名算法(java实现ECDSA签名验签)

一、ECDSA概述

      椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟。ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准。它在1998年既已为ISO所接受,并且包含它的其他一些标准亦在ISO的考虑之中。与普通的离散对数问题(discrete logarithm problem  DLP)和大数分解问题(integer factorization problem  IFP)不同,椭圆曲线离散对数问题(elliptic curve discrete logarithm problem  ECDLP)没有亚指数时间的解决方法。因此椭圆曲线密码的单位比特强度要高于其他公钥体制。

二、JDK中对于ECDSA的实现

  特别注意的是:ECDSA签名算法,只是在JDK1.7之后才有实现,最常见的场景是在微软的产品的安装的产品密钥的设计

1、KeyPairGenerator

       KeyPairGenerator 类用于生成公钥和私钥对。密钥对生成器是使用 getInstance 工厂方法(返回一个给定类的实例的静态方法)构造的。
      特定算法的密钥对生成器可以创建能够与此算法一起使用的公钥/私钥对。它还可以将特定于算法的参数与每个生成的密钥关联。
      有两种生成密钥对的方式:与算法无关的方式和特定于算法的方式。
 
下面我们将按照指定ECDSA算法去生成秘钥KeyPairGenerator.getInstance("EC");

2、PublicKey

公用密钥的接口

3、PublicKey

 专用密钥的接口

4、PKCS8EncodedKeySpec

PKCS8EncodedKeySpec类继承EncodedKeySpec类,以编码格式来表示私钥。
PKCS8EncodedKeySpec类使用PKCS#8标准作为密钥规范管理的编码格式

5、Signature

Signature 类用来为应用程序提供数字签名算法功能。数字签名用于确保数字数据的验证和完整性。
 
在所有算法当中,数字签名可以是 NIST 标准的 ECDSA,它使用 ECDSA 和 SHA256。可以将使用 SHA256 消息摘要算法的 ECDSA 算法指定为SHA256withECDSA。

三、Java具体实现

其中ECDSA的实现步骤类似于我们之前学习的RSA数字签名算法

实现原则

所谓的公钥与私钥匙成对出现。 遵从的原则就是“私钥签名、公钥验证”,基于jdk1.8实现。
实现步骤
第一步:初始化化秘钥组,生成ECDSA算法的公钥和私

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值