diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/RsaUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/RsaUtils.java index f4f66e3..2541b2a 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/RsaUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/RsaUtils.java @@ -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); } } \ No newline at end of file diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java index ade3954..d4fea5a 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java @@ -87,7 +87,7 @@ public class SysLoginService { // validateCaptcha(username, code, uuid); // 登录前置校验 loginPreCheck(username, strP); - Map map = redisCache.getCacheObject(username + password); + Map map = redisCache.getCacheObject(username + strP); if (CollectionUtil.isNotEmpty(map)) { map.remove("@type"); return map;