分享

RSA/ECB/PKCS1Padding加密

 我就是个蒟蒻 2020-08-10

由于近期经常被改犇,我的有些犇犇会使用RSA/ECB/PKCS1Padding加密。我的公钥:

Modulus: 7749508816481769130958656717979283807090064162903164284448125194652436835418455841001455979629062396710853788700110904825475002409879758932825196227887201
Public Exponent: 65537

解密代码:(直接拿某谷IDE跑就没问题)

import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.security.*;
import java.security.spec.*;
import java.util.Base64;
import java.util.Scanner;
import javax.crypto.Cipher;
public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sca = new Scanner(System.in);
		BigInteger mod = sca.nextBigInteger();
		BigInteger expo = sca.nextBigInteger();
		String str = sca.next();
		sca.close();
		RSAPublicKeySpec spec = new RSAPublicKeySpec(mod, expo);
		KeyFactory factory = KeyFactory.getInstance("RSA");
		PublicKey key = factory.generatePublic(spec);
		Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
		cipher.init(Cipher.DECRYPT_MODE, key);
		byte[] data = cipher.doFinal(Base64.getDecoder().decode(str));
		String ret = new String(data, StandardCharsets.UTF_8);
		System.out.println(ret);
	}
}

输入格式:共三行,第一行为Modulus,第二行为Public Exponent,第三行为Base64编码的密文。

输入样例:

7749508816481769130958656717979283807090064162903164284448125194652436835418455841001455979629062396710853788700110904825475002409879758932825196227887201
65537
VQMtiDl6jutupZi6T5ooTUejV02LYoz7fYjFwUNy4L7hmLQFeLzJqPQculd3j3/oHF0/Y9nk5A+nHHtgQ4fu/A==

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多