| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- package com.ruoyi.app.utils;
- 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;
- public class RsaMima {
- // Rsa 私钥
- public static String privateKey = "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY"
- + "7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN"
- + "PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA"
- + "kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow"
- + "cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv"
- + "DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh"
- + "YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3"
- + "UP8iWi1Qw0Y=";
- /**
- * 私钥解密
- *
- * @param text 待解密的文本
- * @return 解密后的文本
- */
- public 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;
- }
- }
- }
|