From 3c8d864b5f68af5167199e0d5c9ff6c0c5852638 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期一, 20 一月 2025 11:35:45 +0800 Subject: [PATCH] !639 发布 5.3.0-BETA 公测版本 Merge pull request !639 from 疯狂的狮子Li/dev --- ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/utils/EncryptUtils.java | 76 ++++++++++++++++++++++++++++++++++++- 1 files changed, 73 insertions(+), 3 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 index 3504573..2a096ee 100644 --- 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 @@ -19,10 +19,12 @@ * @author 鑰侀┈ */ public class EncryptUtils { + /** * 鍏挜 */ public static final String PUBLIC_KEY = "publicKey"; + /** * 绉侀挜 */ @@ -51,7 +53,7 @@ /** * AES鍔犲瘑 * - * @param data 寰呰В瀵嗘暟鎹� + * @param data 寰呭姞瀵嗘暟鎹� * @param password 绉橀挜瀛楃涓� * @return 鍔犲瘑鍚庡瓧绗︿覆, 閲囩敤Base64缂栫爜 */ @@ -65,6 +67,25 @@ throw new IllegalArgumentException("AES绉橀挜闀垮害瑕佹眰涓�16浣嶃��24浣嶃��32浣�"); } return SecureUtil.aes(password.getBytes(StandardCharsets.UTF_8)).encryptBase64(data, StandardCharsets.UTF_8); + } + + /** + * AES鍔犲瘑 + * + * @param data 寰呭姞瀵嗘暟鎹� + * @param password 绉橀挜瀛楃涓� + * @return 鍔犲瘑鍚庡瓧绗︿覆, 閲囩敤Hex缂栫爜 + */ + public static String encryptByAesHex(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)).encryptHex(data, StandardCharsets.UTF_8); } /** @@ -103,6 +124,25 @@ throw new IllegalArgumentException("SM4绉橀挜闀垮害瑕佹眰涓�16浣�"); } return SmUtil.sm4(password.getBytes(StandardCharsets.UTF_8)).encryptBase64(data, StandardCharsets.UTF_8); + } + + /** + * sm4鍔犲瘑 + * + * @param data 寰呭姞瀵嗘暟鎹� + * @param password 绉橀挜瀛楃涓� + * @return 鍔犲瘑鍚庡瓧绗︿覆, 閲囩敤Base64缂栫爜 + */ + public static String encryptBySm4Hex(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)).encryptHex(data, StandardCharsets.UTF_8); } /** @@ -153,9 +193,24 @@ } /** + * sm2鍏挜鍔犲瘑 + * + * @param data 寰呭姞瀵嗘暟鎹� + * @param publicKey 鍏挜 + * @return 鍔犲瘑鍚庡瓧绗︿覆, 閲囩敤Hex缂栫爜 + */ + public static String encryptBySm2Hex(String data, String publicKey) { + if (StrUtil.isBlank(publicKey)) { + throw new IllegalArgumentException("SM2闇�瑕佷紶鍏ュ叕閽ヨ繘琛屽姞瀵�"); + } + SM2 sm2 = SmUtil.sm2(null, publicKey); + return sm2.encryptHex(data, StandardCharsets.UTF_8, KeyType.PublicKey); + } + + /** * sm2绉侀挜瑙e瘑 * - * @param data 寰呭姞瀵嗘暟鎹� + * @param data 寰呰В瀵嗘暟鎹� * @param privateKey 绉侀挜 * @return 瑙e瘑鍚庡瓧绗︿覆 */ @@ -196,9 +251,24 @@ } /** + * rsa鍏挜鍔犲瘑 + * + * @param data 寰呭姞瀵嗘暟鎹� + * @param publicKey 鍏挜 + * @return 鍔犲瘑鍚庡瓧绗︿覆, 閲囩敤Hex缂栫爜 + */ + public static String encryptByRsaHex(String data, String publicKey) { + if (StrUtil.isBlank(publicKey)) { + throw new IllegalArgumentException("RSA闇�瑕佷紶鍏ュ叕閽ヨ繘琛屽姞瀵�"); + } + RSA rsa = SecureUtil.rsa(null, publicKey); + return rsa.encryptHex(data, StandardCharsets.UTF_8, KeyType.PublicKey); + } + + /** * rsa绉侀挜瑙e瘑 * - * @param data 寰呭姞瀵嗘暟鎹� + * @param data 寰呰В瀵嗘暟鎹� * @param privateKey 绉侀挜 * @return 瑙e瘑鍚庡瓧绗︿覆 */ -- Gitblit v1.9.3