国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

RSA加密算法java簡單實現方法(必看)

2019-11-26 13:49:43
字體:
來源:轉載
供稿:網友

簡單完整的代碼,通過這個代碼你將對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,n		FileInputStream 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);		// 獲取明文m		byte ptext[] = s.getBytes("UTF-8");		BigInteger m = new BigInteger(ptext);		// 計算密文c		BigInteger 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());		}	}}

以上這篇RSA加密算法java簡單實現方法(必看)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桑植县| 杭锦旗| 东光县| 神池县| 武夷山市| 兴国县| 大方县| 应城市| 抚顺县| 崇仁县| 五台县| 榆中县| 获嘉县| 瑞安市| 芜湖县| 田东县| 湖州市| 海丰县| 河北省| 郎溪县| 桂阳县| 龙里县| 屯门区| 葵青区| 仁化县| 南丰县| 收藏| 宣汉县| 东海县| 盐池县| 金门县| 南雄市| 宝鸡市| 饶河县| 穆棱市| 阿拉善右旗| 文化| 吴堡县| 尼木县| 丁青县| 敦化市|