RSAEncrypt.java 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package com.goafanti.common.utils.weChat;
  2. import org.apache.commons.codec.binary.Base64;
  3. import org.bouncycastle.openssl.PEMKeyPair;
  4. import org.bouncycastle.openssl.PEMParser;
  5. import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
  6. import javax.crypto.Cipher;
  7. import java.io.Reader;
  8. import java.io.StringReader;
  9. import java.security.Key;
  10. import java.security.PrivateKey;
  11. import java.security.Security;
  12. public class RSAEncrypt {
  13. public static String decryptRSA(String str, String privateKey) throws Exception {
  14. Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
  15. Cipher rsa = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
  16. rsa.init(Cipher.DECRYPT_MODE, getPrivateKey(privateKey));
  17. byte[] utf8 = rsa.doFinal(Base64.decodeBase64(str));
  18. String result = new String(utf8,"UTF-8");
  19. return result;
  20. }
  21. public static Key getPrivateKey (String privateKey) throws Exception {
  22. Reader privateKeyReader = new StringReader(privateKey);
  23. PEMParser privatePemParser = new PEMParser(privateKeyReader);
  24. Object privateObject = privatePemParser.readObject();
  25. if (privateObject instanceof PEMKeyPair) {
  26. PEMKeyPair pemKeyPair = (PEMKeyPair) privateObject;
  27. JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");
  28. PrivateKey privKey = converter.getPrivateKey(pemKeyPair.getPrivateKeyInfo());
  29. return privKey;
  30. }
  31. return null;
  32. }
  33. }