数字签名算法--3.ECDSA

package Imooc;

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.interfaces.ECPrivateKey;

import java.security.interfaces.ECPublicKey;

import java.security.spec.PKCS8EncodedKeySpec;

import java.security.spec.X509EncodedKeySpec;

import java.security.Signature;

import com.sun.org.apache.xerces.internal.impl.dv.util.HexBin;

//import com.sun.org.apache.bcel.internal.classfile.Signature;

public class ImoocECDSA {

private static String src = "imooc security ecdsa";

public static void main(String[] args) {

jdkECDSA();

}

//java7以后使用

public static void jdkECDSA()

{

try {

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC");

keyPairGenerator.initialize(256);

KeyPair keyPair = keyPairGenerator.generateKeyPair();

ECPublicKey ecPublicKey = (ECPublicKey)keyPair.getPublic();

ECPrivateKey ecPrivateKey = (ECPrivateKey)keyPair.getPrivate();

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:"+HexBin.encode(result));

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) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

时间: 2024-10-24 04:34:25

数字签名算法--3.ECDSA的相关文章

ECDSA数字签名算法

一.ECDSA概述 椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟.ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准.它在1998年既已为ISO所接受,并且包含它的其他一些标准亦在ISO的考虑之中.与普通的离散对数问题(discrete logarithm problem  DLP)和大数分解问题(integer factorization problem  IFP)不同,椭圆曲线离散对数问题(elliptic cur

Java数字签名算法--RSA

签名具有的特性: 安全性 抗否认性 数字签名:带有密钥(公钥.私钥)的消息摘要算法(使用私钥进行签名,使用公钥进行验证) 数字签名算法:RSA.DSA.ECDSA 数字签名特性: 验证数据完整性 认证数据来源 抗否认性 经典算法 MD.SHA两类 数字签名算法-RSA的执行过程 代码: package com.chengxuyuanzhilu.rsa; import java.security.InvalidKeyException; import java.security.KeyFactor

RSA 数字签名算法(Java版)

数字签名算法Java版 还是上代码吧 public static final String SIGN_ALGORITHMS = "SHA1WithRSA"; /** * RSA签名 * @param content 待签名数据 * @param privateKey 私钥 * @param input_charset 编码格式 * @return 签名值 */ public static String sign(String content, String privateKey, St

经典的数字签名算法-RSA

记录: public abstract class RSACoderSignature { private static final String PRIVATE_KEY = "RSAPrivate_Key"; private static final String PUBLIC_KEY = "RSAPublic_key"; private static final int KEY_SIZE = 512; private static final String KE

RSA/SHA1加密和数字签名算法在开放平台中的应用

加密算法 加密算法分为两大类:1.对称加密算法:2.非对称加密算法.   密钥个数 加密 解密 对称加密 一个 使用密钥加密 使用同一个密钥解密 非对称加密 两个,公钥和私钥 使用其中一把密钥加密 使用另外一把密钥解密 RSA非对称加密算法 RSA是目前应用最广泛的非对称加密算法,各种语言都支持RSA算法,如Java,Python,C++(openssl),Go(openssl),PHP(openssl),Object-C,Android,javascript等. 对于一个私钥匙.有且只有一个与

数字签名算法--1.RSA算法代码

package Imooc; 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.

数字签名算法--2.DSA

package Imooc; 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.

FinTech-Blockchain区块链

最近有同事研究Blockchain, 作为曾今在投行打拼过的人事,好吧,投行IT,更加适合来研究介绍新一代的黑科技FinTech-Blockchain,区块链, 另外其实区块链与最近研究的分布式存储息息相关,正好趁热打铁. 总目录 BitCoin比特币 创始人-中本聪 区块链-Blockchain 核心算法 技术架构 交易过程-程序/数学 R3 CEV  总结 1. BitCoin比特币 提到BlockChain不得不先提及比特币, 其实比特币的核心就是区块链技术.BitCoin比特币最初由中本

转:基于TLS1.3的微信安全通信协议mmtls介绍

转自: https://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=2649286266&idx=1&sn=f5d049033e251cccc22e163532355ddf&scene=0&key=b28b03434249256b2a5d4fdf323a185a798eaf972317ca3a47ef060d35c5cd8a4ae35715466d5bb5a558e424d20bef6c&ascene=0&am