java-信息安全(六)-基于RSA理解数字签名示例
2017-12-08 15:54
471 查看
概述
java-信息安全(四)-数据签名、数字证书
java-信息安全(五)-非对称加密算法RSA
RSA工具类
使用java-信息安全(五)-非对称加密算法RSA项目中RSACoder
数字签名理解
// 以下指示方便理解,并非真实场景 // 银行【公钥,私钥】----个人【银行的公钥】 // 一、个人→银行【RSA公钥加密】 // 1.个人发给银行密码,使用银行公钥进行加密,发给银行 // 2.银行读取解密后,准备回馈个人信息 // 二、银行→个人【银行数字签名】 // 注:由于个人没有公钥,私钥,银行也就没法用个人的公钥进行数据加密,但是为了确保信息是银行发的,使用数字签名 // 1.银行将要反馈给个人的数据进行,数字摘要【MD5,sha】等,将数字摘要用私钥加密, // 2.此时,银行将要发数据与私钥加密后的sign一起发给用户 // 3.用户收到数据与签名,用公钥对签名进行解密,解密成功,说明信息是银行发的 // 4.用户将数据用与银行约定好的数字摘要算法,进行数字摘要,对比解密后的签名与此签名是否一致,一致即数据完整 // 补充1,为了防止,别人伪造银行,所以需要使用数字证书,对公钥进行认证,就不会被伪造
示例代码
package com.jd.order.util.encryption; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.Map; import org.junit.Before; import org.junit.Test; public class RSACoderTest { private String publicKey; private String privateKey; @Before public void setUp() throws Exception { Map<String, Object> keyMap = RSACoder.initKey(); publicKey = RSACoder.getPublicKey(keyMap); privateKey = RSACoder.getPrivateKey(keyMap); System.err.println("公钥: \n\r" + publicKey); System.err.println("私钥: \n\r" + privateKey); } @Test public void testSignVerify() throws Exception { String responseMsg = "abc"; System.err.println("私钥签名——公钥验证签名"); // 银行产生签名 String sign = RSACoder.sign(responseMsg.getBytes(), privateKey); System.err.println("签名:\r" + sign); // 客户验证签名 boolean status = RSACoder.verify(responseMsg.getBytes(), publicKey, sign); System.err.println("状态:\r" + status); assertTrue(status); } }
相关文章推荐
- java-信息安全(六)-基于RSA理解数字签名示例
- java-信息安全(七)-基于非对称加密,对称加密等理解HTTPS
- java-信息安全(七)-基于非对称加密,对称加密等理解HTTPS
- java-信息安全(九)-基于DH,非对称加密,对称加密等理解HTTPS
- java-信息安全(九)-基于DH,非对称加密,对称加密等理解HTTPS
- password技术应用设计实践-安全信息传输系统(SITS)(用Java实现DES、RSA、MD5算法)
- 密码技术应用设计实践-安全信息传输系统(SITS)(用Java实现DES、RSA、MD5算法)
- 深入理解Java虚拟机JVM高级特性与最佳实践阅读总结—— 第十三章 线程安全与锁优化
- 深入理解Java类型信息(Class对象)与反射机制
- JAVA源码分享:基于Apache POI,将List<T>内封装的实体类信息写出到磁盘Excel文件(20170905)
- 深入理解Java:SimpleDateFormat安全的时间格式化
- JAVA源码分享:基于Apache POI,将List<T>内封装的实体类信息写出到磁盘Excel文件(20170615)
- DES和RSA加密数据传输信息Java实现
- 基于层次分析法的信息安全风险评估量化法研究报告
- java-信息安全(二)-对称加密算法DES,3DES,AES,Blowfish,RC2,RC4
- Java安全编程:基于口令加密(PBE)
- [Java]读取.RSA密钥信息及获取KEYSTORE指纹信息
- 基于 Java 2 运行时安全模型的线程协作
- 深入理解Java:SimpleDateFormat安全的时间格式化
- JAVA源码分享:基于Apache POI,将List<T>内封装的实体类信息写出到磁盘Excel文件(20170925)