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");