WangHan
2025-04-02 a8ba678a3fe5a39da2c732014cebbb66e408e97c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package com.iplatform.base.util;
 
import com.iplatform.core.util.AESUtils;
import com.walker.infrastructure.utils.Base64;
import com.walker.infrastructure.utils.Base64Utils;
import com.walker.infrastructure.utils.RSAUtil;
import com.walker.infrastructure.utils.StringUtils;
 
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
 
public class PlatformRSAUtils {
 
    /**
     * 使用公共密钥,解密密码数据。<p>目前APP端使用(电商)</p>
     * @param encryptString
     * @return
     * @date 2023-07-11
     */
    public static final String getAesDecryptValue(String encryptString){
        if(StringUtils.isEmpty(encryptString)){
            throw new IllegalArgumentException("加密后密码不能为空");
        }
        return AESUtils.decryptStrAES(encryptString, AES_KEY);
    }
 
    /**
     * 使用对称密钥,加密数据。
     * @param text 原始字符串
     * @return
     * @date 2023-11-13
     */
    public static final String getAesEncryptValue(String text){
        if(StringUtils.isEmpty(text)){
            throw new IllegalArgumentException("不能加密空数据");
        }
        return AESUtils.encryptStrAES(text, AES_KEY);
    }
 
    /**
     * 返回加密之前的原始内容(解密原始字符串)
     * @param encryptString 加密的内容(RSA)
     * @param privateKeyString 私钥字符串
     * @return
     * @date 2023-03-20
     */
    public static final String getRsaDecryptValue(String encryptString, String privateKeyString){
        PrivateKey privateKey = getRsaPrivateKey(privateKeyString);
        if(privateKey == null){
            throw new IllegalStateException("通过私钥字符串生成'PrivateKey'异常!");
        }
        return RSAUtil.decrypt(privateKey, Base64.decode(encryptString.getBytes()));
    }
 
    /**
     * 通过RSA公钥加密文本内容,该方法用于测试
     * @param text
     * @return
     * @date 2024-04-01
     */
    public static final String getRsaEncryptValue(String text){
        try {
            PublicKey publicKey = getRsaPublicKey(PUBK);
            byte[] data = RSAUtil.encrypt(publicKey, text);
            return Base64Utils.encode(data);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
//        try {
//            byte[] data = RSAUtil.encryptByPublicKey(text.getBytes("UTF-8"), PUBK);
//            byte[] baseDecode = Base64Utils.decode(new String(data));
//            return new String(baseDecode, "UTF-8");
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        }
    }
 
    /**
     * 根据私钥字符串,生成对应的私钥对象。<br>RSA标准算法,PKCS8EncodedKeySpec
     * @param privateKeyString
     * @return
     * @date 2023-03-20
     */
    public static final PrivateKey getRsaPrivateKey(String privateKeyString){
        try{
            byte[] keyBytes = Base64Utils.decode(privateKeyString);
            PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            PrivateKey privateK = keyFactory.generatePrivate(pkcs8KeySpec);
            return privateK;
 
        } catch (Exception ex){
            ex.printStackTrace();
            return null;
        }
    }
    public static final PublicKey getRsaPublicKey(String publicKeyString){
        try{
            byte[] keyBytes = Base64Utils.decode(publicKeyString);
            X509EncodedKeySpec pkcs8KeySpec = new X509EncodedKeySpec(keyBytes);
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            PublicKey privateK = keyFactory.generatePublic(pkcs8KeySpec);
            return privateK;
 
        } catch (Exception ex){
            ex.printStackTrace();
            return null;
        }
    }
 
    public static final String AES_KEY = "MIGfMA0GCSqGSIb3";
 
    private static final String PUBK = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDffJ9KczIXi+nsa2Sib3rLnZ5R\n" +
            "yhlY5enEhZTQc1GcTeZb6gqu4HoDJV6lskfexSNCUC/3mmNj2nruWGgRg6iVCAMB\n" +
            "Uf5oMv5nVqIhZ5davy1UZ9yvwL0+yVhBSXmamUmezQlh0H3clUI1N3Hc9aCiulB6\n" +
            "RMIsv1aukBkTBhgQZQIDAQAB";
    public static final String PRIK = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAN98n0pzMheL6exr\n" +
            "ZKJvesudnlHKGVjl6cSFlNBzUZxN5lvqCq7gegMlXqWyR97FI0JQL/eaY2Paeu5Y\n" +
            "aBGDqJUIAwFR/mgy/mdWoiFnl1q/LVRn3K/AvT7JWEFJeZqZSZ7NCWHQfdyVQjU3\n" +
            "cdz1oKK6UHpEwiy/Vq6QGRMGGBBlAgMBAAECgYBEyOuSE5CIVMTjwk4P/LXTs6iF\n" +
            "zektRl5D4UVjPwsQS52qDofJOUf0be0KnKuoMg7fGyUYVUlf81/Aui8VrOsWmEbU\n" +
            "8XL41Pi3m6EWWGeWE1/5q+j29jxYrrhfBcpBH/4fBKMhiNJ+jnJ2bH+TpngRwpNe\n" +
            "nVIfxRU5FdHOL3WNIQJBAPKGUSOgynf82LEQfvpzzp8gqhGMVbnVIqtezUNPQyK2\n" +
            "da7ryWYP88SE38JhB6GlM6bimCWRgIzodydccuJTd50CQQDr54J5upPlMsR3im0Q\n" +
            "qCeVbrGfn+DO226cZMaUhbVwxY7xy4ewXyt4yY6vBxwYX7GYs24jZPKekyWDeqr2\n" +
            "UrVpAkBmXJSwkfQC8sBO86R0dx6VgUbmwzGHjtLkO84tA65VX2eKXdCSeFct8dsz\n" +
            "gpqi+kQzwt3utVvpnVB1V4rRxeLtAkEAm/2SQXwmn8BaOdHHHOSUiDOSMMM/nIlt\n" +
            "Mu1QgpWHzPJV+31iVDYaQNzHBOXmphdhEGBVzAHMjR8wByjuM8OtQQJBAM8pK710\n" +
            "JC6YzfchqlNMFRh6kieWEx+o+aoWtL0EmeHB56nF96QHPW09UAP2VRUdadgSD+1w\n" +
            "Zmw/rOnAk8t/ryg=";
}