参考 http://blog.csdn.net/a394268045/article/details/52232120
package rsa; import org.apache.commons.codec.binary.Hex; import javax.crypto.Cipher; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.security.Key; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.SecureRandom; /** * Created by Administrator on 2018/3/12. */ public class Main { public static void main(String[] args) throws Exception { String source = "hhh测试"; String cryptograph = encrypt(source); System.out.println("生成的密文-->" + cryptograph); String target = decrypt(cryptograph); System.out.println("解密密文-->" + target); } public static void generateKeyPair() throws Exception { SecureRandom sr = new SecureRandom(); KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(512, sr); KeyPair kp = kpg.generateKeyPair(); Key publicKey = kp.getPublic(); Key privateKey = kp.getPrivate(); ObjectOutputStream oos1 = new ObjectOutputStream(new FileOutputStream("e:/publicKey.keystore")); ObjectOutputStream oos2 = new ObjectOutputStream(new FileOutputStream("e:/privateKey.keystore")); oos1.writeObject(publicKey); oos2.writeObject(privateKey); oos1.close(); oos2.close(); } public static String encrypt(String source) throws Exception { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("e:/publicKey.keystore")); Key key = (Key) ois.readObject(); ois.close(); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, key); byte[] b = source.getBytes("utf-8"); byte[] b1 = cipher.doFinal(b); // return Base64.encodeBase64String(b1); return Hex.encodeHexString(b1); } public static String decrypt(String cryptograph) throws Exception { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("e:/privateKey.keystore")); Key key = (Key) ois.readObject(); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, key); // byte[] b1 = Base64.decodeBase64(cryptograph); // // byte[] b = cipher.doFinal(b1); // // return new String(b, "utf-8"); byte[] b1 = Hex.decodeHex(cryptograph); byte[] b = cipher.doFinal(b1); return new String(b, "utf-8"); } }