package test; import cn.hutool.crypto.SecureUtil; import weaver.rsa.security.Base64; import javax.crypto.Cipher; import java.security.*; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; /** * @Description: 获取RSA 加密和解密公钥和私钥 * @Author: * @CreateDate: 2022/5/13 13:35 */ public class TestRSA {
/** * @Description //获取公钥和私钥 * @Date 2022/5/13 14:05 * @Param [args] * @return void */ public static void main(String[] args) {
KeyPair keyPair = SecureUtil.generateKeyPair("RSA/ECB/PKCS1Padding",2048); String pubKey = Base64.encodeBase64String(keyPair.getPublic().getEncoded()); String priKey = Base64.encodeBase64String(keyPair.getPrivate().getEncoded());
System.out.println(pubKey);
System.out.println("-------------");
System.out.println(priKey);
}
/** * @Description //使用公钥进行加密 * @Date 2022/5/13 14:05 * @Param [args] * @return void */
public void encrypt() throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
String pubKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqHYUkgdQWK+1lNToWYitaV16ZT1cAsB/BQV3jlfLryzd6ZzqJmmDSxTaevOxiEh2KiSH6IGz1hJ2UkwP2yJqckZcoZ0XvDhLCvPyogjZAuuG68WkGIJpPii4r9W4XZHq8DyXZBFrzkzxb+AdYrmaT4nGA5ToYOg5bwtseMfOxcJwA12QMHQxJO8GnDScBivb0nGP3sFMtFKt+4mDGwHrAaUl5rQjiB7+m6el1zeuLVLNOXdi4veyq9aM3IFyHOc/UPX2XESLjJr7fk6wMUXFp8W22zhbc/m+3btH0wu9nbVHFzo8feolLXqq6IzEERWmIUL4cbJ5IvpHF6tCM5BwjwIDAQAB";
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(Base64.decodeBase64(pubKey));
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(keySpec);
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] bytes = cipher.doFinal("yg-chy".getBytes());
String s = Base64.encodeBase64String(bytes);
System.out.println(s);
}
/** * @Description //使用私钥进行解密 * @Date 2022/5/13 14:06 * @Param [args] * @return void */
public void decrypt() throws Exception{
String priKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCodhSSB1BYr7WU1OhZiK1pXXplPVwCwH8FBXeOV8uvLN3pnOomaYNLFNp687GISHYqJIfogbPWEnZSTA/bImpyRlyhnRe8OEsK8/KiCNkC64brxaQYgmk+KLiv1bhdkerwPJdkEWvOTPFv4B1iuZpPicYDlOhg6DlvC2x4x87FwnADXZAwdDEk7wacNJwGK9vScY/ewUy0Uq37iYMbAesBpSXmtCOIHv6bp6XXN64tUs05d2Li97Kr1ozcgXIc5z9Q9fZcRIuMmvt+TrAxRcWnxbbbOFtz+b7du0fTC72dtUcXOjx96iUteqrojMQRFaYhQvhxsnki+kcXq0IzkHCPAgMBAAECggEACLCCkh+/dLunhaRP0eJ7c25ndFZsaxXr12H3T0fXEVOipLy71TxnEdXjCSmN1EZMlhLpUcRy9s1f/hG/VaHaVMetWobEZSiQMmHv94y2SPDGNl4s/zim3hZypFtFVcpDkJ3Hf1losq0EXS11xpRlUcn9BU1GiU0hPUmdEEPaNhgigPGT/nIw4kSGoW7ajk1DRC/dGDPeJl3VjzJE3o4+9scixN3wGpdBSvkXyj5aHpwR2xSnAMrWu5XJSNgNnTmnUQ/6NITYOfERcePw9dF8TXYB34KImiNCDrz4WCeRR3NSceYFYGm2FzYGCVmoPKR4ABJT1f1L59QRbhgFfca4EQKBgQDc7nKZa2iFC3T+aO9b1ARBg9P0dQ8MMGuOReFEw82ozB05oTGFbREQHvZTTv5L4EEKOQoDuQwzRT192XcMabd6km38wFVdYpAF5BDeAzy6UmW2KZvlnrIoq5S7qL2YxZNQTmosK+5TiogAez2X0YdVKXlA/ngM1AMlkaK1tCPy/wKBgQDDM4GETeknKU+OWzfsY/9sdRNrUf8Dku+mIBGTqXlvYRrohdNsDAhzOMXc3M1UchYUs4Y9/7aZdQXQhqs/Zexd9uOCrYmSceMFbtHhpYn2eW+nOCZacb7EuzeK1KAMnBw3cJd5SO1uIp4O7Z3Pa51DB+Su1Lfzb7hLbU/NhqPScQKBgFK9em26rAonoEknQ31Aidd/Z4HF1TzbZWyC/zqhmgP9bXSHyeQOVLWU4uuQSexgr/sEIZwDUW5iIAVhzBP6A50D+e0Omum+X/HU1/xNehDNiwoNyzTTmiVhHPKq31a3p9QLiffA/CCNYSHNBeQ1tFlQjvioVI15WTRYtncWX+BBAoGAHzYqHGyUvjVFyj5dp8epfL8PltZqjzi8ZvSzusebaiq9sbZMQvd9lmbahGEt17XSQAcgjONJYCos/tW5pg53B+NFJ4z19VuOcDzzBECC2c07BCLfRxDu7uf8jo9G9B02CctP/Q2jITwZx8tIs3TClYg6kZXjv+H6Nt1IqFVB9pECgYEAtZguA8iD6/ZM2Ly8/4WpwQUvmco2oDu7yCs+BdOQOvoRrQqhr6M3ILaktGVxaHN5Yft/TdAyi2WiiZ1BgfaNw1yM+iEIOGpGSuPfvZ8WoxwJLhSYbKh8M/8X1K0Nq4PdymrHRG7exVl5lQDieyNfSc0M73smkmZWhLztteAjApw=";
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(priKey));
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = keyFactory.generatePrivate(keySpec);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
String content = "FXdqPfAdU6L+eAwgyn03YPkkiARttQwkpp6T77km+aUaE4ye5mBGxcLkSqogldNOp7yYbvhrZyfFmpPWsdpzYn4NjAzEV0v88cBp0YkNUQFR6ckD3yRA/K2WH+I9H1Rgwuad82hmfp11K6fb3v08t89rsoltUMu51dUqeA48Tl2fAxr9lnalVNNltypsEF9F2C+zJFFXqNhPBTV/a2gvAimkDw2EH4Vo3aVNYLlgUtTH2PNaxjRo1ceqZjsSBKmren2KUnVoN7NXdKHKoDhPVReQT8uhcsDQm+qBZfZW6qicqvQBhZ9RIcLXWaBgNz8Vd40l4vTUyumjmOA2wc/0hw==";
byte[] bytes = cipher.doFinal(Base64.decodeBase64(content));
System.out.println(new String(bytes));
}
}