package com.mine.lea.encrypt; import lombok.SneakyThrows; import org.apache.commons.codec.binary.Base64; import javax.crypto.Cipher; import java.io.FileReader; import java.nio.charset.StandardCharsets; import java.security.*; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; public class EncryptMain { @SneakyThrows public static void main(String[] args) { KeyPairGenerator pairGenerator = KeyPairGenerator.getInstance("RSA"); pairGenerator.initialize(512,new SecureRandom()); KeyPair keyPair = pairGenerator.generateKeyPair(); RSAPrivateKey aPrivate = (RSAPrivateKey)keyPair.getPrivate(); RSAPublicKey aPublic = (RSAPublicKey)keyPair.getPublic(); String privateKey = Base64.encodeBase64URLSafeString(aPrivate.getEncoded()); System.out.println("privateKey:"+privateKey); System.out.println(); String publicKey = Base64.encodeBase64URLSafeString(aPublic.getEncoded()); System.out.println("publicKey:"+publicKey); System.out.println(); PublicKey rsaPublicKey = KeyFactory.getInstance("RSA") .generatePublic(new X509EncodedKeySpec(Base64.decodeBase64(publicKey))); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE,rsaPublicKey); String toencStr = "yyyyyyyyyyyyyyyyy";//getFileContent(); String encryptStr = Base64.encodeBase64URLSafeString(cipher.doFinal(toencStr.getBytes(StandardCharsets.UTF_8))); System.out.println("encryptStr:"+encryptStr); System.out.println(); PrivateKey rsaPrivateKey = KeyFactory.getInstance("RSA") .generatePrivate(new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKey))); Cipher acipher = Cipher.getInstance("RSA"); acipher.init(Cipher.DECRYPT_MODE,rsaPrivateKey); byte[] bytes = acipher.doFinal(Base64.decodeBase64(encryptStr)); System.out.println("decoded:"+new String(bytes)); } @SneakyThrows public static String getFileContent() { FileReader fileReader = new FileReader("D:/tmp/myfile.txt"); char[] buf = new char[1024]; StringBuilder builder = new StringBuilder(); int read = 0; while (read != -1){ read = fileReader.read(buf); builder.append(buf); buf = new char[1024]; } return builder.toString(); } }