From 0ebcac34e32580dcb631507a5ef6823449e32b63 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期二, 18 四月 2023 22:04:26 +0800
Subject: [PATCH] add 新增 EncryptUtils 加解密工具类
---
ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/utils/EncryptUtils.java | 233 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 233 insertions(+), 0 deletions(-)
diff --git a/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/utils/EncryptUtils.java b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/utils/EncryptUtils.java
new file mode 100644
index 0000000..6ed9fe7
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/utils/EncryptUtils.java
@@ -0,0 +1,233 @@
+package org.dromara.common.encrypt.utils;
+
+import cn.hutool.core.codec.Base64;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.SmUtil;
+import cn.hutool.crypto.asymmetric.KeyType;
+import cn.hutool.crypto.asymmetric.RSA;
+import cn.hutool.crypto.asymmetric.SM2;
+
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 瀹夊叏鐩稿叧宸ュ叿绫�
+ *
+ * @author 鑰侀┈
+ */
+public class EncryptUtils {
+ /**
+ * 鍏挜
+ */
+ public static final String PUBLIC_KEY = "publicKey";
+ /**
+ * 绉侀挜
+ */
+ public static final String PRIVATE_KEY = "privateKey";
+
+ /**
+ * Base64鍔犲瘑
+ *
+ * @param data 寰呭姞瀵嗘暟鎹�
+ * @return 鍔犲瘑鍚庡瓧绗︿覆
+ */
+ public static String encryptByBase64(String data) {
+ return Base64.encode(data, StandardCharsets.UTF_8);
+ }
+
+ /**
+ * Base64瑙e瘑
+ *
+ * @param data 寰呰В瀵嗘暟鎹�
+ * @return 瑙e瘑鍚庡瓧绗︿覆
+ */
+ public static String decryptByBase64(String data) {
+ return Base64.decodeStr(data, StandardCharsets.UTF_8);
+ }
+
+ /**
+ * AES鍔犲瘑
+ *
+ * @param data 寰呰В瀵嗘暟鎹�
+ * @param password 绉橀挜瀛楃涓�
+ * @return 鍔犲瘑鍚庡瓧绗︿覆, 閲囩敤Base64缂栫爜
+ */
+ public static String encryptByAes(String data, String password) {
+ if (StrUtil.isBlank(password)) {
+ throw new IllegalArgumentException("AES闇�瑕佷紶鍏ョ閽ヤ俊鎭�");
+ }
+ // aes绠楁硶鐨勭閽ヨ姹傛槸16浣嶃��24浣嶃��32浣�
+ int[] array = {16, 24, 32};
+ if (!ArrayUtil.contains(array, password.length())) {
+ throw new IllegalArgumentException("AES绉橀挜闀垮害瑕佹眰涓�16浣嶃��24浣嶃��32浣�");
+ }
+ return SecureUtil.aes(password.getBytes(StandardCharsets.UTF_8)).encryptBase64(data, StandardCharsets.UTF_8);
+ }
+
+ /**
+ * AES瑙e瘑
+ *
+ * @param data 寰呰В瀵嗘暟鎹�
+ * @param password 绉橀挜瀛楃涓�
+ * @return 瑙e瘑鍚庡瓧绗︿覆
+ */
+ public static String decryptByAes(String data, String password) {
+ if (StrUtil.isBlank(password)) {
+ throw new IllegalArgumentException("AES闇�瑕佷紶鍏ョ閽ヤ俊鎭�");
+ }
+ // aes绠楁硶鐨勭閽ヨ姹傛槸16浣嶃��24浣嶃��32浣�
+ int[] array = {16, 24, 32};
+ if (!ArrayUtil.contains(array, password.length())) {
+ throw new IllegalArgumentException("AES绉橀挜闀垮害瑕佹眰涓�16浣嶃��24浣嶃��32浣�");
+ }
+ return SecureUtil.aes(password.getBytes(StandardCharsets.UTF_8)).decryptStr(data, StandardCharsets.UTF_8);
+ }
+
+ /**
+ * sm4鍔犲瘑
+ *
+ * @param data 寰呭姞瀵嗘暟鎹�
+ * @param password 绉橀挜瀛楃涓�
+ * @return 鍔犲瘑鍚庡瓧绗︿覆, 閲囩敤Base64缂栫爜
+ */
+ public static String encryptBySm4(String data, String password) {
+ if (StrUtil.isBlank(password)) {
+ throw new IllegalArgumentException("SM4闇�瑕佷紶鍏ョ閽ヤ俊鎭�");
+ }
+ // sm4绠楁硶鐨勭閽ヨ姹傛槸16浣嶉暱搴�
+ int sm4PasswordLength = 16;
+ if (sm4PasswordLength != password.length()) {
+ throw new IllegalArgumentException("SM4绉橀挜闀垮害瑕佹眰涓�16浣�");
+ }
+ return SmUtil.sm4(password.getBytes(StandardCharsets.UTF_8)).encryptBase64(data, StandardCharsets.UTF_8);
+ }
+
+ /**
+ * sm4瑙e瘑
+ *
+ * @param data 寰呰В瀵嗘暟鎹�
+ * @param password 绉橀挜瀛楃涓�
+ * @return 瑙e瘑鍚庡瓧绗︿覆
+ */
+ public static String decryptBySm4(String data, String password) {
+ if (StrUtil.isBlank(password)) {
+ throw new IllegalArgumentException("SM4闇�瑕佷紶鍏ョ閽ヤ俊鎭�");
+ }
+ // sm4绠楁硶鐨勭閽ヨ姹傛槸16浣嶉暱搴�
+ int sm4PasswordLength = 16;
+ if (sm4PasswordLength != password.length()) {
+ throw new IllegalArgumentException("SM4绉橀挜闀垮害瑕佹眰涓�16浣�");
+ }
+ return SmUtil.sm4(password.getBytes(StandardCharsets.UTF_8)).decryptStr(data, StandardCharsets.UTF_8);
+ }
+
+ /**
+ * 浜х敓sm2鍔犺В瀵嗛渶瑕佺殑鍏挜鍜岀閽�
+ *
+ * @return 鍏閽ap
+ */
+ public static Map<String, String> generateSm2Key() {
+ Map<String, String> keyMap = new HashMap<>(2);
+ SM2 sm2 = SmUtil.sm2();
+ keyMap.put(PRIVATE_KEY, sm2.getPrivateKeyBase64());
+ keyMap.put(PUBLIC_KEY, sm2.getPublicKeyBase64());
+ return keyMap;
+ }
+
+ /**
+ * sm2鍏挜鍔犲瘑
+ *
+ * @param data 寰呭姞瀵嗘暟鎹�
+ * @param publicKey 鍏挜
+ * @return 鍔犲瘑鍚庡瓧绗︿覆, 閲囩敤Base64缂栫爜
+ */
+ public static String encryptBySm2(String data, String publicKey) {
+ if (StrUtil.isBlank(publicKey)) {
+ throw new IllegalArgumentException("SM2闇�瑕佷紶鍏ュ叕閽ヨ繘琛屽姞瀵�");
+ }
+ SM2 sm2 = SmUtil.sm2(null, publicKey);
+ return sm2.encryptBase64(data, StandardCharsets.UTF_8, KeyType.PublicKey);
+ }
+
+ /**
+ * sm2绉侀挜瑙e瘑
+ *
+ * @param data 寰呭姞瀵嗘暟鎹�
+ * @param privateKey 绉侀挜
+ * @return 瑙e瘑鍚庡瓧绗︿覆
+ */
+ public static String decryptBySm2(String data, String privateKey) {
+ if (StrUtil.isBlank(privateKey)) {
+ throw new IllegalArgumentException("SM2闇�瑕佷紶鍏ョ閽ヨ繘琛岃В瀵�");
+ }
+ SM2 sm2 = SmUtil.sm2(privateKey, null);
+ return sm2.decryptStr(data, KeyType.PrivateKey, StandardCharsets.UTF_8);
+ }
+
+ /**
+ * 浜х敓RSA鍔犺В瀵嗛渶瑕佺殑鍏挜鍜岀閽�
+ *
+ * @return 鍏閽ap
+ */
+ public static Map<String, String> generateRsaKey() {
+ Map<String, String> keyMap = new HashMap<>(2);
+ RSA rsa = SecureUtil.rsa();
+ keyMap.put(PRIVATE_KEY, rsa.getPrivateKeyBase64());
+ keyMap.put(PUBLIC_KEY, rsa.getPublicKeyBase64());
+ return keyMap;
+ }
+
+ /**
+ * rsa鍏挜鍔犲瘑
+ *
+ * @param data 寰呭姞瀵嗘暟鎹�
+ * @param publicKey 鍏挜
+ * @return 鍔犲瘑鍚庡瓧绗︿覆, 閲囩敤Base64缂栫爜
+ */
+ public static String encryptByRsa(String data, String publicKey) {
+ if (StrUtil.isBlank(publicKey)) {
+ throw new IllegalArgumentException("RSA闇�瑕佷紶鍏ュ叕閽ヨ繘琛屽姞瀵�");
+ }
+ RSA rsa = SecureUtil.rsa(null, publicKey);
+ return rsa.encryptBase64(data, StandardCharsets.UTF_8, KeyType.PublicKey);
+ }
+
+ /**
+ * rsa绉侀挜瑙e瘑
+ *
+ * @param data 寰呭姞瀵嗘暟鎹�
+ * @param privateKey 绉侀挜
+ * @return 瑙e瘑鍚庡瓧绗︿覆
+ */
+ public static String decryptByRsa(String data, String privateKey) {
+ if (StrUtil.isBlank(privateKey)) {
+ throw new IllegalArgumentException("RSA闇�瑕佷紶鍏ョ閽ヨ繘琛岃В瀵�");
+ }
+ RSA rsa = SecureUtil.rsa(privateKey, null);
+ return rsa.decryptStr(data, KeyType.PrivateKey, StandardCharsets.UTF_8);
+ }
+
+ /**
+ * md5鍔犲瘑
+ *
+ * @param data 寰呭姞瀵嗘暟鎹�
+ * @return 鍔犲瘑鍚庡瓧绗︿覆, 閲囩敤Hex缂栫爜
+ */
+ public static String encryptByMd5(String data) {
+ return SecureUtil.md5(data);
+ }
+
+ /**
+ * sha256鍔犲瘑
+ *
+ * @param data 寰呭姞瀵嗘暟鎹�
+ * @return 鍔犲瘑鍚庡瓧绗︿覆, 閲囩敤Hex缂栫爜
+ */
+ public static String encryptBySha256(String data) {
+ return SecureUtil.sha256(data);
+ }
+
+}
--
Gitblit v1.9.3