java使用RSA加密方式,实现数字签名
2017-10-07 18:24
489 查看
全栈工程师开发手册 (作者:栾鹏)
java教程全解
java使用RSA加密方式,实现数字签名。数字签名,使用私钥获取签名,使用公钥校验签名
测试代码
数字签名工具类的实现
java教程全解
java使用RSA加密方式,实现数字签名。数字签名,使用私钥获取签名,使用公钥校验签名
测试代码
public static void main(String args[]) throws Exception{ DigitalSignDemo ds=new DigitalSignDemo(); ds.generateKey(); //产生私钥和公钥 byte[] signeddata=ds.sign("test.txt"); //文件签名 // 打印签名 for(int i=0; i<signeddata.length; i++){ System.out.println(signeddata[i]); } ds.checkSign("test.txt",signeddata); //校验签名 }
数字签名工具类的实现
package com.lp.app.safe; import java.io.*; import java.security.*; import java.security.interfaces.*; public class DigitalSignDemo{ PublicKey pbkey; PrivateKey prkey; public void generateKey() { try { KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(1024); KeyPair kp = kpg.genKeyPair(); pbkey = kp.getPublic(); prkey = kp.getPrivate(); } catch (Exception e) { } } //文件签名 public byte[] sign(String path) throws Exception{ //获取要签名的数据 FileInputStream f = new FileInputStream(path); int num = f.available(); byte[] data = new byte[num]; f.read(data); // 获取私钥 RSAPrivateKey prk = (RSAPrivateKey)prkey; Signature s = Signature.getInstance("MD5WithRSA"); s.initSign(prk); s.update(data); //数据签名 byte[] signeddata = s.sign(); return signeddata; } //校验签名 public void checkSign(String path,byte[] signeddata) throws Exception{ FileInputStream f = new FileInputStream(path); int num = f.available(); byte[] data = new byte[num]; f.read(data); // 读公钥 RSAPublicKey pbk = (RSAPublicKey)pbkey; // 获取对象 Signature s = Signature.getInstance("MD5WithRSA"); //初始化 s.initVerify(pbk); // 传入原始数据 s.update(data); boolean ok = false; try{ //用签名验证原始数据 ok = s.verify(signeddata); System.out.println(ok); } catch(SignatureException e){ System.out.println(e); } System.out.println("校验结束!"); } }
相关文章推荐
- java使用RSA加密方式实现数据加密解密
- (转)RSA加密解密及数字签名Java实现
- 关于使用JS前台加密、JAVA后台解密的RSA实现,RSA加密和签名
- RSA加密解密及数字签名Java实现
- 如何使用Java对密码进行加密 Java Sah加密方式帮你实现加密
- 使用JAVA,实现RSA加密过程
- RSA加密解密及数字签名Java实现及部分原理
- RSA加密解密及数字签名Java实现
- RSA加密解密及数字签名Java实现--转
- 关于使用JS前台加密、JAVA后台解密的RSA实现,RSA加密和签名
- RSA加密解密及数字签名Java实现
- 使用JAVA,实现RSA加密过程
- RSA加密解密及数字签名Java实现
- RSA加密解密及数字签名Java实现
- Java实现 RSA加密解密及数字签名
- C# 与JAVA 的RSA 加密解密交互,互通,C#使用BouncyCastle来实现私钥加密,公钥解密的方法
- RSA加密解密及数字签名Java实现