?? 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 + -