package hbec.app.weisecurity.utils;
import java.math.BigInteger;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
public class T {
static final String mod="119013762783552790664444510344126639271924844701717173872088828066827617618352052423868797764101050671675010273300968086768952758222793093337410679638385758438181998828779151354457120185810439862646172407875625351933121940976586295594801107405021633366112226209939925716039327701639315656827458274941425368677";
static final String publicE="65537";
static final String privateE = "106917532045172255415411675710221707032269514269165514577919371366747681689703456650559215972034323501923156458960095779126430300336072236497450160586990533670480101946578693218455238274718168302034205034895891150713831453664198422986491449327196528842768860543017467669252798863303270185486892719101442835713";
public static void main(String[] args) throws Exception{
// 获取公私钥n
BigInteger m = new BigInteger(mod);
// 获取公钥e
BigInteger pubE = new BigInteger(publicE);
// 密文
BigInteger priE = new BigInteger(privateE);
String test = "我123这个是测试";
test = URLEncoder.encode(test,"UTF-8");//解决中文乱码的问题
byte[] testByte = test.getBytes();
BigInteger testByteInt = new BigInteger(testByte);
byte[] enTestByte = testByteInt.modPow(pubE, m).toByteArray();//将明文加密为密文
byte[] deTestByte = new BigInteger(enTestByte).modPow(priE, m).toByteArray();//将密文解密为明文
System.out.println(URLDecoder.decode(new String(deTestByte), "UTF-8"));
}
static void generateKeyPair(){
KeyPairGenerator keyPairGen = null;
try {
keyPairGen = KeyPairGenerator.getInstance("RSA");
} catch (NoSuchAlgorithmException e) {
}
keyPairGen.initialize(1024);
KeyPair keyPair = keyPairGen.generateKeyPair();
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
System.out.println("publicKey Mod: "+publicKey.getModulus());
System.out.println("publicKey Exp: "+publicKey.getPublicExponent());
System.out.println("privateKey Mod: "+privateKey.getModulus());
System.out.println("privateKey Exp: "+privateKey.getPrivateExponent());
}
}