Browse Source

feat: 完善加密操作

master
niushuai233 2 years ago
parent
commit
829904b5c5
  1. 6
      src/main/java/cc/niushuai/bastionserver/common/desensitization/util/SensitiveInfoUtil.java
  2. 46
      src/main/java/cc/niushuai/bastionserver/common/util/encryption/AesEncryptUtil.java
  3. 10
      src/main/java/cc/niushuai/bastionserver/common/util/encryption/EncryptedString.java
  4. 2
      src/main/java/cc/niushuai/bastionserver/modules/system/controller/LoginController.java

6
src/main/java/cc/niushuai/bastionserver/common/desensitization/util/SensitiveInfoUtil.java

@ -99,8 +99,8 @@ public class SensitiveInfoUtil { @@ -99,8 +99,8 @@ public class SensitiveInfoUtil {
}
}
}
//long endTime=System.currentTimeMillis();
//log.info((isEncode ? "加密操作," : "解密操作,") + "当前程序耗时:" + (endTime - startTime) + "ms");
long endTime=System.currentTimeMillis();
log.info((isEncode ? "加密操作," : "解密操作,") + "当前程序耗时:" + (endTime - startTime) + "ms");
return obj;
}
@ -138,7 +138,7 @@ public class SensitiveInfoUtil { @@ -138,7 +138,7 @@ public class SensitiveInfoUtil {
public static String getDecodeData(String data) {
String result = null;
try {
result = AesEncryptUtil.desEncrypt(data);
result = AesEncryptUtil.decrypt(data);
} catch (Exception exception) {
log.debug("数据解密错误,原数据:" + data);
}

46
src/main/java/cc/niushuai/bastionserver/common/util/encryption/AesEncryptUtil.java

@ -17,8 +17,8 @@ public class AesEncryptUtil { @@ -17,8 +17,8 @@ public class AesEncryptUtil {
/**
* 使用AES-128-CBC加密模式 key和iv可以相同
*/
private static String KEY = EncryptedString.key;
private static String IV = EncryptedString.iv;
private static final String KEY = EncryptedString.key;
private static final String IV = EncryptedString.iv;
/**
* 加密方法
@ -68,9 +68,9 @@ public class AesEncryptUtil { @@ -68,9 +68,9 @@ public class AesEncryptUtil {
* @return 解密的结果
* @throws Exception
*/
public static String desEncrypt(String data, String key, String iv) throws Exception {
public static String decrypt(String data, String key, String iv) throws Exception {
//update-begin-author:taoyan date:2022-5-23 for:VUEN-1084 【vue3】online表单测试发现的新问题 6、解密报错 ---解码失败应该把异常抛出去,在外面处理
byte[] encrypted1 = Base64.decode(data);
byte[] encrypted = Base64.decode(data);
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
@ -78,7 +78,7 @@ public class AesEncryptUtil { @@ -78,7 +78,7 @@ public class AesEncryptUtil {
cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
byte[] original = cipher.doFinal(encrypted1);
byte[] original = cipher.doFinal(encrypted);
String originalString = new String(original);
//加密解码后的字符串会出现\u0000
return originalString.replaceAll("\\u0000", "");
@ -103,26 +103,26 @@ public class AesEncryptUtil { @@ -103,26 +103,26 @@ public class AesEncryptUtil {
* @return
* @throws Exception
*/
public static String desEncrypt(String data) throws Exception {
return desEncrypt(data, KEY, IV);
public static String decrypt(String data) throws Exception {
return decrypt(data, KEY, IV);
}
// /**
// * 测试
// */
// public static void main(String args[]) throws Exception {
// String test1 = "sa";
// String test =new String(test1.getBytes(),"UTF-8");
// String data = null;
// String key = KEY;
// String iv = IV;
// // /g2wzfqvMOeazgtsUVbq1kmJawROa6mcRAzwG1/GeJ4=
// data = encrypt(test, key, iv);
// System.out.println("数据:"+test);
// System.out.println("加密:"+data);
// String jiemi =desEncrypt(data, key, iv).trim();
// System.out.println("解密:"+jiemi);
// }
/**
* 测试
*/
public static void main(String args[]) throws Exception {
String test1 = "sa";
String test = new String(test1.getBytes(), "UTF-8");
String data = null;
String key = KEY;
String iv = IV;
// /g2wzfqvMOeazgtsUVbq1kmJawROa6mcRAzwG1/GeJ4=
data = encrypt(test, key, iv);
System.out.println("数据:" + test);
System.out.println("加密:" + data);
String jiemi = decrypt("luLwvA8vet/J6MFGawa4OQ==", key, iv).trim();
System.out.println("解密:" + jiemi);
}
}

10
src/main/java/cc/niushuai/bastionserver/common/util/encryption/EncryptedString.java

@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
package cc.niushuai.bastionserver.common.util.encryption;
import lombok.Data;
/**
* EncryptedString
* 加密所需参数 同时通过接口提供给前台
*
* @author: jeecg-boot
* @author niushuai233
* @date: 2023/1/4 15:21
*/
@Data
public class EncryptedString {
@ -14,10 +14,10 @@ public class EncryptedString { @@ -14,10 +14,10 @@ public class EncryptedString {
/**
* 长度为16个字符
*/
public static String key = "1234567890adbcde";
public static final String key = "B3AC90F688974749";
/**
* 长度为16个字符
*/
public static String iv = "1234567890hjlkew";
public static final String iv = "A39F3975DC5D4D38";
}

2
src/main/java/cc/niushuai/bastionserver/modules/system/controller/LoginController.java

@ -486,7 +486,7 @@ public class LoginController { @@ -486,7 +486,7 @@ public class LoginController {
@GetMapping(value = "/getEncryptedString")
public Result<Map<String, String>> getEncryptedString() {
Result<Map<String, String>> result = new Result<Map<String, String>>();
Map<String, String> map = new HashMap(5);
Map<String, String> map = new HashMap(2);
map.put("key", EncryptedString.key);
map.put("iv", EncryptedString.iv);
result.setResult(map);

Loading…
Cancel
Save