更改RSA加密方式

duhanyu
杜函宇 4 months ago
parent a3e17ceb04
commit a38d58d91d

@ -1,12 +1,9 @@
package com.ruoyi.common.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.KeyFactory;
import java.security.PrivateKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
/**
* RSA
@ -16,59 +13,33 @@ import java.security.spec.X509EncodedKeySpec;
public class RsaUtils
{
// Rsa 私钥
public static String privateKey = " -----BEGIN RSA PRIVATE KEY-----\n" +
"MIIEpQIBAAKCAQEAnEeZMSY6UdmJRJzqbPb5h6iXW1PziRWHlwq7vfZ7Bslb3kKR\n" +
"Va3TeGqiZsCCf7y5CuGS61multLKi/ABbS11LRTpUv+UAYm+edmM4TK/KdPbSExz\n" +
"D8z8CZd6x0wek+uKSkDOZWlwlrH0cXSfTyY3uget7jEbU/0WJCbucKXrFiB34fl4\n" +
"7RTgCBfcWHbCnIuEqV8h4mewvZDsluD55x4cv6vdlLS4NQ9CHkFWJjeViirjZscj\n" +
"b4X8m31PTmRMQAzsKjmS0cm87Gtjv+VfQHBLaV962FVEZBF+D/809bunUxfAi0kX\n" +
"D3K6OSYw0fvJo1sESOVntxjhKDng1ZXwoaIBcQIDAQABAoIBAQCJRQaVOkvNqzM8\n" +
"Vkw/a+wgMYDJEoN+rK+NhzsDD6Zefq24G2aHCIkQYzHE6WF3C/DJUvv2x65oAj0x\n" +
"D55hJKWg9JZBdgauFyx84Q8ym514AwPAjI4gmd/kGO8acY0GRsUQlb31K9leNG9O\n" +
"3K42Go6mU6p95xpm+o3hMWUNA1/r7TdlIq7BB7pV4z+GYaVnAhPJP6JUddt8L8eO\n" +
"Y0LCtLvE24FcXbkrHTMdBca+dfNeYT03Vvd1JYRxHr+VHFVh8Ov6adAQ/vejJ8Iu\n" +
"+xcbgKjeQSAVBCjTu15q8mmW4ZVip0DRKjJ35EbWu8HMTqSTWEe+iZqHzvf/I2cz\n" +
"3vBLCqoBAoGBAM9ErbanIyL3yfPwMfrQhxAqDLuJQaNraZvvG4VJKlJDtux2dT3Z\n" +
"rIh+Qe0QEivuePbEb9fKPTVtdK/vJSOcmlgsJvFPqsfEvTF2CS01Me2YOjvQtheY\n" +
"FZd9KR51kOA+9oQhnJIzUmIOJ9ERY/BS4xmWfj+Rb83WYzTQY9z1d2HRAoGBAMEF\n" +
"9Gm37U2X3TX7A83dSJYVz7stWQ1aEqDJqfC8rOondti0Mkx2kKHJjEHSVBl0rpPT\n" +
"lVxbhiaHO9QMlD5qOGfDnIxRiAA5MQn0PO3u6E27ZiMxx5di8ipLF1oRvT5FHwcy\n" +
"RXL39lDMib2lBxzRT9InZZ4owgU3oTc6ZW1kz+2hAoGBALSvvnA4jBzzvo51mlx4\n" +
"ZQXmYmsqYJpCDTLu4yLygX5toY3KRrLAi/QBfR9Ynz7FCZa18HpBx9JHtS2aYNoG\n" +
"r1amRtyfAtZb4EK6D43ljbz+s+VpMRSodEo3xhzTiJS0ztqpIoEhVHQ+ut87NdBP\n" +
"scKguzZXZwweFSX5dNUu9//BAoGBAIsTM0uIzl598VEXj2Ig8k/RX19KCUPphkp7\n" +
"gwqFp0D/Nk5lZ2hYdVVc1sYGObotrCuu44ssFrhj7+OVPKrL9eAtvPoNNKSUkJTP\n" +
"eacl4BNB1xG8qEaXcEyw1h57cZMQUo7o1clEiCEnfoc6BKnq1kxhPoJ6c3E2593X\n" +
"IYV0gayBAoGARE9gbxgCP8YW1AvOB1nEkyWNR40qEKhAniQP+pg3h7o5K/7aUcew\n" +
"UnJsYdOm3JPA8zkGbXWupIaqzVwKYVNEVqt0lJ+L5jbIrPXtarHoBEnH1MB0spZ5\n" +
"ZwtgQpYOR2MbVRDKzKf+YbhcKMjt6U5JqiAf/JYSPCkR0BCK8cQ8+TI=\n" +
"-----END RSA PRIVATE KEY-----";
private static final String PRIVATE_KEY = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCXxtLWRhOIyEhLkxlTbndtzS6RrGsDWV8LOIAEXFCsLZzT20ytAaO4fpXXHah80EwaE4P25Y3+qQBDL8fA5780pSoLDo3Si/qC5KuowNb8F1ncGXSuYzX/3mNMLXF98UW96PvFY198hto8j5snhYtf01WI2L0eZPQFE3Mnh3ZHzos88Jr5vEto+OyHZHa0GRsuRSi33vr1olo8+LA8JkcyS5B6eMdKalYvSiSV6owfwQZfuPoDkD/ghRc8w0owzOSJJGmwgnrkYmYMBudHdldF8LwzNUEEkHrOvk3QXg33Fl8X4lL9jHvbq0K76sDoYMLJPG1D/Ccqk93AU/mdRYJZAgMBAAECggEAG+w3M7aWt25pZoX8fc3v6OJ7s88trOMPSkgtvR+is9p8ZLmOxLFthm67cGUDb1r+9Tkr6QtYcUZ0RugObt3z3mKYdopJ6zdXcidRsW0w4BYHsSd5wO99qsImMIiXvZzawNKRJ0Jd+dHxanzdBYtbFdkSfmepe2MFRb3LTLVuPE1oCTKbzwqPSGWERpkejZJz+Cthc/xp7PWNFtfmEASEuAmYV0tdWC0H6NJqTtg2Stotp4hlk/jTKLoYQW/m3pmnkw1QbVRh1B9mtxTVtGV6HzhiQbuc5HWaUvBm4ysiXjFEtCTpBeDjwvnD1wkDXR1SyVdYiAfDYM2zCCs5OvWPFQKBgQD3MONf6Jn7x6Xo2uwsKwca4HFkfIHpK5TdiFB9p2eCZ4V8JZNPv02fPRldFb56nYVmdNVoo8/z4WG9t6uNoTLDMqTI0wVkrJCufQCI/50XnKITEmLfXOKXkwhekRLi1oho0nEsbaQllFFrlfx4NkcgoW6XL1TW8eRx8JD7EORI9wKBgQCdL3mZ5gumLLhB/RTK5G786jJtztNxQ4jpFtClv25uPJgqsRgSVoLnnTCmLm/yGsHNna/CHbA4mYOYzXiM10WUK1tEqPwYm0nalQAxtXJjNgERKjWWaopZW/f4pCBPV8RG4dk/+13zjPCYTeS4i7J89psHljqoeQoLe4xazLKLLwKBgHgV+f/34gadIQ6UfDOg25zE+JFWo04BbBqLRH8munRxkjmTj5MoXq9DYXUFQToUGGCD1cE2A6p5DaC6/86YRy7pBYDCc1ZLNyZtd7sWYty7rUkSn5Hfb/0u4tv+ImysyCwUQALTaPEQstVPUg2cYMWLZ0xvJAogDVkFA4nU1PJVAoGAEBQ7LDMMHgOVFar95YNYlyad4f22Q2/VIYLj9RCQC1bHehaDj9ypp2e9AkLd0LZL/OyUfhbrX97UR109Z6rdwzpsK6ndn+bCt0lmq68T9HIhyc+3i5t6a4ms5BJl+7fOrDGON61O/wr70ZimPPqNV5siYLRNa8516JbK1L77xKECgYEAyaTui+7B27219nwgoin9AuM0H7B+rzz0GkXmYXzWhxgKB+eBuJbZsrUTOBVkk66j3Ss4cJvQJ9utcFBnS6msEAUCYU6OuInIb/PMv8I7DC7SrrTZpyD9LXKIB4aYtqPrntZSo+75EAHgXNpRYqUwkpZbCuYSIXebno4JOxB1RK8=" +
"CfhCau4K5xqFfYnCDxwN6EfWtl118/RC/H1G6YUH9VZ02hTsIKtcdoz/w3knVDuL/i1uCtKtJDdyejF8osix2IVVA2HNoUPEG+3VH0IJjOoFTZTP76LcuQvgig6pjAtB5+GFPVkkrdxWZc3rn+psCdzYBueVhDRDFatKxfvAQMk90SMNVOLApB8u4aWUdxGju3vOKO5ShBUVutyczTzAOW39hHdzXX5CvGPXNYNv7S55AVAI5ZVdn11dyxgPr6u7n7AuHtc2pvUddHTRM/UczNN5lkpdMvISQy4iHwCw9wGVax3kvRxMzhYiBricSKJWbl4LiAMRV3P15LWkaBwSkw==";
/**
*
*
* @param text
* @return
*
*/
public static String decryptByPrivateKey(String text) throws Exception
{
return decryptByPrivateKey(privateKey, text);
public static String decryptByPrivateKey(String decodeString) throws Exception {
// 将传入的Base64编码字符串解码为字节数组
byte[] encryptedBytes = java.util.Base64.getDecoder().decode(decodeString);
// 使用私钥解密
PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(org.apache.commons.codec.binary.Base64.decodeBase64(PRIVATE_KEY));
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
byte[] decryptedBytes = decrypt(encryptedBytes, privateKey);
// 返回解密后的字符串
return new String(decryptedBytes);
}
/**
*
*
* @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/ECB/OAEPWithMD5AndMGF1Padding");
private static byte[] decrypt(byte[] data, PrivateKey privateKey) throws Exception {
// 获取RSA算法的Cipher实例
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
// 用私钥初始化Cipher实例设置为解密模式
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] result = cipher.doFinal(Base64.decodeBase64(text));
return new String(result);
// 执行解密操作,返回解密后的字节数组
return cipher.doFinal(data);
}
}

@ -87,7 +87,7 @@ public class SysLoginService {
// validateCaptcha(username, code, uuid);
// 登录前置校验
loginPreCheck(username, strP);
Map<String, Object> map = redisCache.getCacheObject(username + password);
Map<String, Object> map = redisCache.getCacheObject(username + strP);
if (CollectionUtil.isNotEmpty(map)) {
map.remove("@type");
return map;

Loading…
Cancel
Save