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 { /** * 使用公共密钥,解密密码数据。

目前APP端使用(电商)

* @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); // } } /** * 根据私钥字符串,生成对应的私钥对象。
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="; }