RSA密钥生成指数和模

public class Main {

	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());
	}
	
}

未完待续。。。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值