content: package com.ruoyi.common.sign;
  
  import org.apache.commons.codec.binary.Base64;
  import javax.crypto.Cipher;
  import java.security.*;
  import java.security.interfaces.RSAPrivateKey;
  import java.security.interfaces.RSAPublicKey;
  import java.security.spec.PKCS8EncodedKeySpec;
  import java.security.spec.X509EncodedKeySpec;
  
  /**
   * RSA加密解密
   *
   * @author ruoyi
   **/
  public class RsaUtils
  {
      // Rsa 私钥
      public static String privateKey = "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY"
              + "7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN"
              + "PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA"
              + "kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow"
              + "cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv"
              + "DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh"
              + "YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3"
              + "UP8iWi1Qw0Y=";
  
      /**
       * 私钥解密
       *
       * @param text 待解密的文本
       * @return 解密后的文本
       */
      public static String decryptByPrivateKey(String text) throws Exception
      {
          return decryptByPrivateKey(privateKey, text);
      }
  
      /**
       * 公钥解密
       *
       * @param publicKeyString 公钥
       * @param text 待解密的信息
       * @return 解密后的文本
       */
      public static String decryptByPublicKey(String publicKeyString, String text) throws Exception
      {
          X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(Base64.decodeBase64(publicKeyString));
          KeyFactory keyFactory = KeyFactory.getInstance("RSA");
          PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
          Cipher cipher = Cipher.getInstance("RSA");
          cipher.init(Cipher.DECRYPT_MODE, publicKey);
          byte[] result = cipher.doFinal(Base64.decodeBase64(text));
          return new String(result);
      }
  
      /**
       * 私钥加密
       *
       * @param privateKeyString 私钥
       * @param text 待加密的信息
       * @return 加密后的文本
       */
      public static String encryptByPrivateKey(String privateKeyString, String text) throws Exception
      {
          PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKeyString));
          KeyFactory keyFactory = KeyFactory.getInstance("RSA");
          PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
          Cipher cipher = Cipher.getInstance("RSA");
          cipher.init(Cipher.ENCRYPT_MODE, privateKey);
          byte[] result = cipher.doFinal(text.getBytes());
          return Base64.encodeBase64String(result);
      }
  
      /**
       * 私钥解密
       *
       * @param privateKeyString 私钥
       * @param text 待解密的文本
       * @return 解密后的文本
       */
      public static String decryptByPrivateKey(String privateKeyString, String text) throws Exception
      {
          PKCS8EncodedKeySpec pkcs8EncodedKeySpec5 = new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKeyString));
          KeyFactory keyFactory = KeyFactory.getInstance("RSA");
          PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec5);
          Cipher cipher = Cipher.getInstance("RSA");
          cipher.init(Cipher.DECRYPT_MODE, privateKey);
          byte[] result = cipher.doFinal(Base64.decodeBase64(text));
          return new String(result);
      }
  
      /**
       * 公钥加密
       *
       * @param publicKeyString 公钥
       * @param text 待加密的文本
       * @return 加密后的文本
       */
      public static String encryptByPublicKey(String publicKeyString, String text) throws Exception
      {
          X509EncodedKeySpec x509EncodedKeySpec2 = new X509EncodedKeySpec(Base64.decodeBase64(publicKeyString));
          KeyFactory keyFactory = KeyFactory.getInstance("RSA");
          PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec2);
          Cipher cipher = Cipher.getInstance("RSA");
          cipher.init(Cipher.ENCRYPT_MODE, publicKey);
          byte[] result = cipher.doFinal(text.getBytes());
          return Base64.encodeBase64String(result);
      }
  
      /**
       * 构建RSA密钥对
       *
       * @return 生成后的公私钥信息
       */
      public static RsaKeyPair generateKeyPair() throws NoSuchAlgorithmException
      {
          KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
          keyPairGenerator.initialize(1024);
          KeyPair keyPair = keyPairGenerator.generateKeyPair();
          RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();
          RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();
          String publicKeyString = Base64.encodeBase64String(rsaPublicKey.getEncoded());
          String privateKeyString = Base64.encodeBase64String(rsaPrivateKey.getEncoded());
          return new RsaKeyPair(publicKeyString, privateKeyString);
      }
  
      /**
       * RSA密钥对对象
       */
      public static class RsaKeyPair
      {
          private final String publicKey;
          private final String privateKey;
  
          public RsaKeyPair(String publicKey, String privateKey)
          {
              this.publicKey = publicKey;
              this.privateKey = privateKey;
          }
  
          public String getPublicKey()
          {
              return publicKey;
          }
  
          public String getPrivateKey()
          {
              return privateKey;
          }
      }
  }
  