RSA加密算法java简单实现
来源:互联网 发布:网络主播用什么摄像头 编辑:程序博客网 时间:2024/05/24 04:22
有问题请扫描下图
简单完整的代码,通过这个代码你将对RSA加密算法在Java中的实现方法有一个初步的了解,这个类,你可以直接使用,水平高的,就自己修改完善下代码。
package security;import java.security.*;import java.security.spec.*;import java.security.interfaces.*;import javax.crypto.spec.*;import javax.crypto.interfaces.*;import java.io.*;import java.math.*;public class RSADemo {public RSADemo() {}public static void generateKey() {try {KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");kpg.initialize(1024);KeyPair kp = kpg.genKeyPair();PublicKey pbkey = kp.getPublic();PrivateKey prkey = kp.getPrivate();// 保存公钥FileOutputStream f1 = new FileOutputStream("pubkey.dat");ObjectOutputStream b1 = new ObjectOutputStream(f1);b1.writeObject(pbkey);// 保存私钥FileOutputStream f2 = new FileOutputStream("privatekey.dat");ObjectOutputStream b2 = new ObjectOutputStream(f2);b2.writeObject(prkey);} catch (Exception e) {}}public static void encrypt() throws Exception {String s = "Hello World!";// 获取公钥及参数e,nFileInputStream f = new FileInputStream("pubkey.dat");ObjectInputStream b = new ObjectInputStream(f);RSAPublicKey pbk = (RSAPublicKey) b.readObject();BigInteger e = pbk.getPublicExponent();BigInteger n = pbk.getModulus();System.out.println("e= " + e);System.out.println("n= " + n);// 获取明文mbyte ptext[] = s.getBytes("UTF-8");BigInteger m = new BigInteger(ptext);// 计算密文cBigInteger c = m.modPow(e, n);System.out.println("c= " + c);// 保存密文String cs = c.toString();BufferedWriter out =new BufferedWriter(new OutputStreamWriter(new FileOutputStream("encrypt.dat")));out.write(cs, 0, cs.length());out.close();}public static void decrypt() throws Exception {// 读取密文BufferedReader in =new BufferedReader(new InputStreamReader(new FileInputStream("encrypt.dat")));String ctext = in.readLine();BigInteger c = new BigInteger(ctext);// 读取私钥FileInputStream f = new FileInputStream("privatekey.dat");ObjectInputStream b = new ObjectInputStream(f);RSAPrivateKey prk = (RSAPrivateKey) b.readObject();BigInteger d = prk.getPrivateExponent();// 获取私钥参数及解密BigInteger n = prk.getModulus();System.out.println("d= " + d);System.out.println("n= " + n);BigInteger m = c.modPow(d, n);// 显示解密结果System.out.println("m= " + m);byte[] mt = m.toByteArray();System.out.println("PlainText is ");for (int i = 0; i < mt.length; i++) {System.out.print((char) mt[i]);}}public static void main(String args[]) {try {generateKey();encrypt();decrypt();} catch (Exception e) {System.out.println(e.toString());}}}
4 0
- RSA加密算法java简单实现
- RSA加密算法原理和java简单实现
- RSA加密算法-Java实现
- RSA加密算法的简单实现
- 《Java---RSA加密算法简单应用》
- java rsa加密算法java实现
- RSA加密算法的java实现
- RSA加密算法的java实现
- [python]rsa加密算法的一个简单实现
- JAVA实现RSA非对称加密算法
- JAVA实现RSA加密,非对称加密算法
- RSA非对称加密算法Java实现
- C++实现RSA加密算法
- python实现RSA加密算法
- RSA加密算法的实现
- RSA加密算法 C++实现
- RSA实现加密算法
- Java加密算法 RSA
- 认识linux的各个版本
- ASP.NET中文缓存乱码
- hibernate多对一关联配置
- hdu1002 高精度 多位
- ArcGIS教程:Workflow Manager是什么?
- RSA加密算法java简单实现
- 金叶国槐的培养与维护
- 企业ERP架构Dynamics AX中对战的Gp
- ListView性能优化
- 卡板的结构
- 企业ERP对于跨国公司的Microsoft Dynamics和SAP Business One的
- 【C#】输出一个范围内所有的水仙花数
- 企业ERP的中型组织的Microsoft Dynamics GP的注意事项
- 奇妙适度的Eclipse 500