⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rsatool.java

📁 RSA加密算法演示程序.包括公钥与私钥的生成算法.自定义公钥与私钥的长度
💻 JAVA
字号:
package org.xiaolq.rsa;

import java.math.BigInteger;
import java.util.*;
public class RSATool {

	Random random = new Random();
	BigInteger temp, textM, textC;
	Map<Integer, BigInteger> map = new HashMap<Integer, BigInteger>();
	/**
	 * 产生公钥
	 * 
	 */
	public BigInteger checkE(BigInteger biP, BigInteger biQ, MainRSA main) {
		long OL = (biP.intValue() - 1) * (biQ.intValue() - 1);
		String tempOL = String.valueOf(OL);
		BigInteger biOL = new BigInteger(tempOL);
		main.setBiOL(biOL);
		do{
			temp = BigInteger.probablePrime(10, random);
		}while(temp.gcd(biOL).intValue() != 1);
		
		return temp;
	}
	/**
	 * 产生私钥
	 * 
	 */
	public BigInteger checkD(BigInteger e, BigInteger OL) {
		temp = e.modInverse(OL);
		return temp;
	}
	/**
	 * 随机产生一个大素数
	 */
	public BigInteger producePrimeNum() {
		temp = BigInteger.probablePrime(15, random);
		return temp;
	}
	/**
	 * 对明文textM 进行加密
	 *
	 */
	public String encript(String m, BigInteger e, BigInteger n) {
		String temp = null;
		StringBuffer sb = new StringBuffer();
		for(int i = 0; i < m.length(); i++){
			
			temp = m.substring(i, i + 1);

			textM = new BigInteger(temp);
			textC = textM.modPow(e, n);
			map.put(i, textC);
			sb.append(textC);
			sb.append(" ");
			
		}
		
		return sb.toString();
		
	}
	
	/**
	 * 对密文textC 进行解密
	 */
	public BigInteger decode(Map<Integer, BigInteger> map, BigInteger d, BigInteger n) {
		
		StringBuffer sb = new StringBuffer();
		for(int i = 0; i < map.size(); i++){
				textM = map.get(i).modPow(d, n);
				sb.append(textM);		
		}
		textM = new BigInteger(sb.toString());
		
		return textM;
		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -