diff --git a/sms4j-core/src/main/java/org/dromara/sms4j/core/proxy/processor/SingleBlendRestrictedProcessor.java b/sms4j-core/src/main/java/org/dromara/sms4j/core/proxy/processor/SingleBlendRestrictedProcessor.java
index 96679fb7..5a4db2c0 100644
--- a/sms4j-core/src/main/java/org/dromara/sms4j/core/proxy/processor/SingleBlendRestrictedProcessor.java
+++ b/sms4j-core/src/main/java/org/dromara/sms4j/core/proxy/processor/SingleBlendRestrictedProcessor.java
@@ -57,7 +57,7 @@ public class SingleBlendRestrictedProcessor implements SmsProcessor, SmsDaoAware
}
int maximum = 0;
try{
- maximum = Integer.parseInt(maximumObj) ;
+ maximum = Integer.parseInt(String.valueOf(maximumObj)) ;
}catch (Exception e){
log.error("获取厂商级发送上限参数错误!请检查!");
throw new IllegalArgumentException("获取厂商级发送上限参数错误");
diff --git a/sms4j-oa-plugin/sms4j-oa-core/pom.xml b/sms4j-oa-plugin/sms4j-oa-core/pom.xml
index 32520f0b..b72305a4 100644
--- a/sms4j-oa-plugin/sms4j-oa-core/pom.xml
+++ b/sms4j-oa-plugin/sms4j-oa-core/pom.xml
@@ -52,6 +52,11 @@
spring-boot-starter
+
+ cn.hutool
+ hutool-crypto
+
+
diff --git a/sms4j-oa-plugin/sms4j-oa-core/src/main/java/org/dromara/oa/core/byteTalk/utils/ByteTalkBuilder.java b/sms4j-oa-plugin/sms4j-oa-core/src/main/java/org/dromara/oa/core/byteTalk/utils/ByteTalkBuilder.java
index 04d24f6b..70478499 100644
--- a/sms4j-oa-plugin/sms4j-oa-core/src/main/java/org/dromara/oa/core/byteTalk/utils/ByteTalkBuilder.java
+++ b/sms4j-oa-plugin/sms4j-oa-core/src/main/java/org/dromara/oa/core/byteTalk/utils/ByteTalkBuilder.java
@@ -1,22 +1,19 @@
package org.dromara.oa.core.byteTalk.utils;
+import cn.hutool.core.codec.Base64;
+import cn.hutool.crypto.digest.HMac;
+import cn.hutool.crypto.digest.HmacAlgorithm;
import cn.hutool.json.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.dromara.oa.comm.entity.Request;
import org.dromara.oa.comm.enums.MessageType;
-import javax.crypto.Mac;
-import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-import java.util.Base64;
import java.util.List;
import java.util.Objects;
import static org.dromara.oa.comm.enums.MessageType.BYTETALK_TEXT;
-
/**
* 飞书通知签名和信息构建
* @author dongfeng
@@ -29,15 +26,9 @@ public class ByteTalkBuilder {
//把timestamp+"\n"+密钥当做签名字符串
String stringToSign = timestamp + "\n" + secret;
//使用HmacSHA256算法计算签名
- Mac mac = null;
- try {
- mac = Mac.getInstance("HmacSHA256");
- mac.init(new SecretKeySpec(stringToSign.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
- } catch (NoSuchAlgorithmException | InvalidKeyException e) {
- throw new RuntimeException(e);
- }
- byte[] signData = mac.doFinal(new byte[]{});
- return new String(Base64.getEncoder().encode(signData));
+ HMac mac = new HMac(HmacAlgorithm.HmacSHA256, stringToSign.getBytes(StandardCharsets.UTF_8));
+ byte[] signData = mac.digest(new byte[]{});
+ return Base64.encode(signData);
}
diff --git a/sms4j-oa-plugin/sms4j-oa-core/src/main/java/org/dromara/oa/core/dingTalk/utils/DingTalkBuilder.java b/sms4j-oa-plugin/sms4j-oa-core/src/main/java/org/dromara/oa/core/dingTalk/utils/DingTalkBuilder.java
index 74af8749..65ec55a0 100644
--- a/sms4j-oa-plugin/sms4j-oa-core/src/main/java/org/dromara/oa/core/dingTalk/utils/DingTalkBuilder.java
+++ b/sms4j-oa-plugin/sms4j-oa-core/src/main/java/org/dromara/oa/core/dingTalk/utils/DingTalkBuilder.java
@@ -1,19 +1,17 @@
package org.dromara.oa.core.dingTalk.utils;
+import cn.hutool.core.codec.Base64;
+import cn.hutool.crypto.digest.HMac;
+import cn.hutool.crypto.digest.HmacAlgorithm;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.dromara.oa.comm.entity.Request;
import org.dromara.oa.comm.enums.MessageType;
-import javax.crypto.Mac;
-import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-import java.util.Base64;
import java.util.List;
import java.util.Objects;
@@ -32,17 +30,11 @@ public class DingTalkBuilder {
Long timestamp = System.currentTimeMillis();
String stringToSign = timestamp + "\n" + secret;
- Mac mac = null;
+ HMac mac = new HMac(HmacAlgorithm.HmacSHA256, secret.getBytes(StandardCharsets.UTF_8));
+ byte[] signData = mac.digest(stringToSign.getBytes(StandardCharsets.UTF_8));
+ String sign;
try {
- mac = Mac.getInstance("HmacSHA256");
- mac.init(new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
- } catch (NoSuchAlgorithmException | InvalidKeyException e) {
- throw new RuntimeException(e);
- }
- byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8));
- String sign = null;
- try {
- sign = URLEncoder.encode(new String(Base64.getEncoder().encode(signData)), StandardCharsets.UTF_8.toString());
+ sign = URLEncoder.encode(Base64.encode(signData), StandardCharsets.UTF_8.toString());
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
diff --git a/sms4j-provider/src/main/java/org/dromara/sms4j/qiniu/util/QiNiuUtils.java b/sms4j-provider/src/main/java/org/dromara/sms4j/qiniu/util/QiNiuUtils.java
index 6ae28dac..15d174b5 100644
--- a/sms4j-provider/src/main/java/org/dromara/sms4j/qiniu/util/QiNiuUtils.java
+++ b/sms4j-provider/src/main/java/org/dromara/sms4j/qiniu/util/QiNiuUtils.java
@@ -1,6 +1,8 @@
package org.dromara.sms4j.qiniu.util;
import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.crypto.digest.HMac;
+import cn.hutool.crypto.digest.HmacAlgorithm;
import cn.hutool.json.JSONUtil;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@@ -8,8 +10,6 @@ import org.dromara.sms4j.comm.constant.Constant;
import org.dromara.sms4j.comm.exception.SmsBlendException;
import org.dromara.sms4j.qiniu.config.QiNiuConfig;
-import javax.crypto.Mac;
-import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URI;
@@ -19,8 +19,6 @@ import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.*;
-import static org.apache.commons.codec.digest.HmacUtils.hmacSha1;
-
/**
* @author Administrator
* @Date: 2024/1/30 16:37 50
@@ -43,19 +41,15 @@ public class QiNiuUtils {
if (ObjectUtil.isNotEmpty(body)) {
dataToSign.append(body);
}
- Mac sha1Mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
- SecretKeySpec secretKeySpec = new SecretKeySpec(qiNiuConfig.getAccessKeySecret().getBytes(StandardCharsets.UTF_8), HMAC_SHA1_ALGORITHM);
- sha1Mac.init(secretKeySpec);
- byte[] signData = sha1Mac.doFinal(dataToSign.toString().getBytes(StandardCharsets.UTF_8));
+ HMac hMac = new HMac(HmacAlgorithm.HmacSHA1, qiNiuConfig.getAccessKeySecret().getBytes(StandardCharsets.UTF_8));
+ byte[] signData = hMac.digest(dataToSign.toString().getBytes(StandardCharsets.UTF_8));
String encodedSignature = Base64.getEncoder().encodeToString(signData);
- System.out.println("encodedSignature = " + encodedSignature);
-
return "Qiniu " + qiNiuConfig.getAccessKeyId() + ":" + encodedSignature;
}
public static Map getHeaderAndSign(String url, HashMap hashMap, QiNiuConfig qiNiuConfig) {
- String signature = null;
+ String signature;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
String signDate = dateFormat.format(new Date());
@@ -67,7 +61,7 @@ public class QiNiuUtils {
}
//请求头
- Map header = new HashMap<>();
+ Map header = new HashMap<>(3);
header.put("Authorization", signature);
header.put("X-Qiniu-Date", signDate);
header.put("Content-Type", "application/json");