📄 rsatool.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 + -