- 浏览: 228340 次
- 性别:
- 来自: 上海
最新评论
以下3钟数字签名都是基于jdk7的
1,RSA
2,DSA
3,ECDSA
1,RSA
String password="test"; // 1.初始化密钥 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(512); KeyPair keyPair = keyPairGenerator.generateKeyPair(); RSAPublicKey rsaPublicKey = (RSAPublicKey)keyPair.getPublic(); RSAPrivateKey rsaPrivateKey = (RSAPrivateKey)keyPair.getPrivate(); // 2.进行签名 PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded()); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); Signature signature = Signature.getInstance("MD5withRSA"); signature.initSign(privateKey); signature.update(password.getBytes()); byte[] result = signature.sign(); //System.out.println("jdk rsa sign:" + Hex.encodeHexString(result) ); // 3.验证签名 X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded()); keyFactory = KeyFactory.getInstance("RSA"); PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec); signature = Signature.getInstance("MD5withRSA"); signature.initVerify(publicKey); signature.update(password.getBytes()); boolean bool = signature.verify(result);
2,DSA
String password="test"; // 1.初始化密钥 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA"); keyPairGenerator.initialize(512); KeyPair keyPair = keyPairGenerator.generateKeyPair(); DSAPublicKey dsaPublicKey = (DSAPublicKey)keyPair.getPublic(); DSAPrivateKey dsaPrivateKey = (DSAPrivateKey)keyPair.getPrivate(); // 2.进行签名 PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(dsaPrivateKey.getEncoded()); KeyFactory keyFactory = KeyFactory.getInstance("DSA"); PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); Signature signature = Signature.getInstance("SHA1withDSA"); signature.initSign(privateKey); signature.update(password.getBytes()); byte[] result = signature.sign(); System.out.println("jdk dsa sign:" + Hex.encodeHexString(result) ); // 3.验证签名 X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(dsaPublicKey.getEncoded()); keyFactory = KeyFactory.getInstance("DSA"); PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec); signature = Signature.getInstance("SHA1withDSA"); signature.initVerify(publicKey); signature.update(password.getBytes()); boolean bool = signature.verify(result);
3,ECDSA
String password="test"; // 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(password.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(password.getBytes());
发表评论
-
三分钟学会@Autowired@Qualifier@Primary注解
2018-05-20 09:39 0今天主要简单的跟大家介绍一下spring自动装配相关的@A ... -
两分钟学会自动注入@Resource和@Inject注解
2018-05-20 09:25 9216上文系统的介绍了spring自动装配@Autowired注解 ... -
一分钟学会spring注解之@Lazy注解
2018-05-20 09:24 6252今天主要从以下几方面来介绍一下@Lazy注解 @La ... -
一分钟学会spring注解之@Autowired注解(二)
2018-05-20 09:35 5983上一遍文章中有简单的介绍@Autowired注解的使用,没有 ... -
全网最全技术电子书免费发放
2018-05-20 09:19 1278之前整理过一些互联网技术相关的视频资料,大家的反馈都不错,然 ... -
深入理解spring之Aware接口的相关实现
2018-05-20 09:28 1446前面几篇文章简单的介绍了spring中bean注解以及怎么在 ... -
200G免费偷懒必看资料全集(二)
2018-05-05 16:10 1104在上文小编整理过一大波资料分享出来之后,大家的回应说都不错 ... -
250G偷懒必看资料全集
2018-05-05 16:04 1194要想成为一个专业的'偷懒'程序员,没有点偷懒必看资料怎么能 ... -
200G免费偷懒必看资料全集(二)
2018-05-04 22:41 0在上文小编整理过一大波资料分享出来之后,大家的回应说都不错( ... -
深入理解java的反射机制
2018-04-29 19:03 540今天将从以下4方面来系统的学习一下java的反射机制: ... -
深入理解java注解的实现原理
2018-04-29 19:13 695今天将从以下4个方面来系统的学习一下java注解 ... -
深入理解java动态代理的实现机制
2018-04-29 19:10 529今天将从以下5方面来系统的学习一下java动态代理的实现机 ... -
spring boot 过滤器去除请求参数前后空格
2017-09-26 21:54 11199需求:去除用户表单参数中由于用户不小心输 ... -
spring+quartz实现定时任务支持集群
2016-08-08 16:49 706最近项目要做集群,然后找了下资料发现quartz本身就支持集 ... -
spring+aop+自定义注解实现操作日志记录
2016-08-07 11:49 75151,spring配置文件 <bean class= ... -
Nginx1.9+LuaJIT+Kafka的点播监控系统实战
2016-05-21 11:03 1072安装前的准备 Nginx1.9.9LuaJIT-2.0. ... -
post,get请求nginx记录日志kafka自动扫描程序
2016-04-14 16:03 1211kafka的介绍以及使用安装请查看博文ht ... -
springmvc整合dubbo分布式系统的搭建小例子
2016-01-30 12:56 5371四个步骤 1 搭建zookeepe ... -
redis Jedis序列化自定义存储list对象和map数据
2016-01-28 20:07 255261,redis缓存配置类 public class Redis ... -
SpringMVC通过Redis实现缓存主页
2016-01-28 10:48 1737这里说的缓存只是为了提供一些动态的界面没办法作静态化 ...
相关推荐
Java实现数字签名(ChinaSEI) 版权所有 郭克华 讲解详细,有实例,并且均可以测试通过!
JAVA数字签名JAVA数字签名JAVA数字签名JAVA数字签名JAVA数字签名JAVA数字签名JAVA数字签名JAVA数字签名JAVA数字签名JAVA数字签名JAVA数字签名JAVA数字签名JAVA数字签名JAVA数字签名JAVA数字签名JAVA数字签名JAVA数字...
java数字签名的讲解java数字签名的讲解java数字签名的讲解java数字签名的讲解
java数字签名(签名生成,用证书验证签名)
用Java数字签名提供XML安全.doc
java数字签名,可以解决数字签名的问题。
自己用JAVA写的数字签名程序,包括说明文档和截图。
Java语言的数字签名和认证实现代码。包括RSA签名认证、DSA、ECC三种签名认证方式。
java数字签名(签名生成,用证书验证签名)[定义].pdf
Java 数字签名、数字证书生成源码
此项目基于java标准数字签名验签技术可直接二次开发
该资源包含了一个java实现的数字签名的代码,简单易懂。
数字签名 md5数字签名 c实现的md5数字签名 java实现的md5数字签名 数字签名 md5数字签名 c实现的md5数字签名 java实现的md5数字签名
用java 对文件进行签名验证的工具类,根据加密算法,把想要数字签名的文件传入,可自定义添加一些识别记号,返回该文件,再用工具类进行签名,之后再用返回后的文件跟生成的签名备份的文件进行比对,验证签名,以实现文件...
java 国密算法实现,包含SM2 SM3 SM4和数字签名、数字证书的验证以及相应的说明文档
java数字签名(签名生成,用证书验证签名)[汇编].pdf
1、数字签名原理 用RSA算法做数字签名,总的来说,就是签名者用私钥参数d加密,也就是签名;验证者用签字者的公钥参数e解密来完成认证。 下面简要描述数字签名和认证的过程。 (1)、生成密钥 为用户随机生成一对...
Java开发的数字证书、数字签名模块源码。
java xml数字签名工具类 拿来就能用