mirror of
https://gitee.com/dromara/sms4j.git
synced 2025-12-06 17:08:40 +08:00
Merge remote-tracking branch 'origin/dev-3.0.x' into dev-3.0.x
This commit is contained in:
commit
a9d65a4703
@ -57,7 +57,7 @@ public class SingleBlendRestrictedProcessor implements SmsProcessor, SmsDaoAware
|
|||||||
}
|
}
|
||||||
int maximum = 0;
|
int maximum = 0;
|
||||||
try{
|
try{
|
||||||
maximum = Integer.parseInt(maximumObj) ;
|
maximum = Integer.parseInt(String.valueOf(maximumObj)) ;
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
log.error("获取厂商级发送上限参数错误!请检查!");
|
log.error("获取厂商级发送上限参数错误!请检查!");
|
||||||
throw new IllegalArgumentException("获取厂商级发送上限参数错误");
|
throw new IllegalArgumentException("获取厂商级发送上限参数错误");
|
||||||
|
|||||||
@ -52,6 +52,11 @@
|
|||||||
<artifactId>spring-boot-starter</artifactId>
|
<artifactId>spring-boot-starter</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.hutool</groupId>
|
||||||
|
<artifactId>hutool-crypto</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,22 +1,19 @@
|
|||||||
package org.dromara.oa.core.byteTalk.utils;
|
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 cn.hutool.json.JSONObject;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.oa.comm.entity.Request;
|
import org.dromara.oa.comm.entity.Request;
|
||||||
import org.dromara.oa.comm.enums.MessageType;
|
import org.dromara.oa.comm.enums.MessageType;
|
||||||
|
|
||||||
import javax.crypto.Mac;
|
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.security.InvalidKeyException;
|
|
||||||
import java.security.NoSuchAlgorithmException;
|
|
||||||
import java.util.Base64;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import static org.dromara.oa.comm.enums.MessageType.BYTETALK_TEXT;
|
import static org.dromara.oa.comm.enums.MessageType.BYTETALK_TEXT;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 飞书通知签名和信息构建
|
* 飞书通知签名和信息构建
|
||||||
* @author dongfeng
|
* @author dongfeng
|
||||||
@ -29,15 +26,9 @@ public class ByteTalkBuilder {
|
|||||||
//把timestamp+"\n"+密钥当做签名字符串
|
//把timestamp+"\n"+密钥当做签名字符串
|
||||||
String stringToSign = timestamp + "\n" + secret;
|
String stringToSign = timestamp + "\n" + secret;
|
||||||
//使用HmacSHA256算法计算签名
|
//使用HmacSHA256算法计算签名
|
||||||
Mac mac = null;
|
HMac mac = new HMac(HmacAlgorithm.HmacSHA256, stringToSign.getBytes(StandardCharsets.UTF_8));
|
||||||
try {
|
byte[] signData = mac.digest(new byte[]{});
|
||||||
mac = Mac.getInstance("HmacSHA256");
|
return Base64.encode(signData);
|
||||||
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));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,19 +1,17 @@
|
|||||||
package org.dromara.oa.core.dingTalk.utils;
|
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.JSONArray;
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.oa.comm.entity.Request;
|
import org.dromara.oa.comm.entity.Request;
|
||||||
import org.dromara.oa.comm.enums.MessageType;
|
import org.dromara.oa.comm.enums.MessageType;
|
||||||
|
|
||||||
import javax.crypto.Mac;
|
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.security.InvalidKeyException;
|
|
||||||
import java.security.NoSuchAlgorithmException;
|
|
||||||
import java.util.Base64;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@ -32,17 +30,11 @@ public class DingTalkBuilder {
|
|||||||
Long timestamp = System.currentTimeMillis();
|
Long timestamp = System.currentTimeMillis();
|
||||||
|
|
||||||
String stringToSign = timestamp + "\n" + secret;
|
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 {
|
try {
|
||||||
mac = Mac.getInstance("HmacSHA256");
|
sign = URLEncoder.encode(Base64.encode(signData), StandardCharsets.UTF_8.toString());
|
||||||
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());
|
|
||||||
} catch (UnsupportedEncodingException e) {
|
} catch (UnsupportedEncodingException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
package org.dromara.sms4j.qiniu.util;
|
package org.dromara.sms4j.qiniu.util;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.crypto.digest.HMac;
|
||||||
|
import cn.hutool.crypto.digest.HmacAlgorithm;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
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.comm.exception.SmsBlendException;
|
||||||
import org.dromara.sms4j.qiniu.config.QiNiuConfig;
|
import org.dromara.sms4j.qiniu.config.QiNiuConfig;
|
||||||
|
|
||||||
import javax.crypto.Mac;
|
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
@ -19,8 +19,6 @@ import java.security.NoSuchAlgorithmException;
|
|||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import static org.apache.commons.codec.digest.HmacUtils.hmacSha1;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Administrator
|
* @author Administrator
|
||||||
* @Date: 2024/1/30 16:37 50
|
* @Date: 2024/1/30 16:37 50
|
||||||
@ -43,19 +41,15 @@ public class QiNiuUtils {
|
|||||||
if (ObjectUtil.isNotEmpty(body)) {
|
if (ObjectUtil.isNotEmpty(body)) {
|
||||||
dataToSign.append(body);
|
dataToSign.append(body);
|
||||||
}
|
}
|
||||||
Mac sha1Mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
|
HMac hMac = new HMac(HmacAlgorithm.HmacSHA1, qiNiuConfig.getAccessKeySecret().getBytes(StandardCharsets.UTF_8));
|
||||||
SecretKeySpec secretKeySpec = new SecretKeySpec(qiNiuConfig.getAccessKeySecret().getBytes(StandardCharsets.UTF_8), HMAC_SHA1_ALGORITHM);
|
byte[] signData = hMac.digest(dataToSign.toString().getBytes(StandardCharsets.UTF_8));
|
||||||
sha1Mac.init(secretKeySpec);
|
|
||||||
byte[] signData = sha1Mac.doFinal(dataToSign.toString().getBytes(StandardCharsets.UTF_8));
|
|
||||||
String encodedSignature = Base64.getEncoder().encodeToString(signData);
|
String encodedSignature = Base64.getEncoder().encodeToString(signData);
|
||||||
|
|
||||||
System.out.println("encodedSignature = " + encodedSignature);
|
|
||||||
|
|
||||||
return "Qiniu " + qiNiuConfig.getAccessKeyId() + ":" + encodedSignature;
|
return "Qiniu " + qiNiuConfig.getAccessKeyId() + ":" + encodedSignature;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Map<String, String> getHeaderAndSign(String url, HashMap<String, Object> hashMap, QiNiuConfig qiNiuConfig) {
|
public static Map<String, String> getHeaderAndSign(String url, HashMap<String, Object> hashMap, QiNiuConfig qiNiuConfig) {
|
||||||
String signature = null;
|
String signature;
|
||||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'");
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'");
|
||||||
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
|
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||||
String signDate = dateFormat.format(new Date());
|
String signDate = dateFormat.format(new Date());
|
||||||
@ -67,7 +61,7 @@ public class QiNiuUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//请求头
|
//请求头
|
||||||
Map<String, String> header = new HashMap<>();
|
Map<String, String> header = new HashMap<>(3);
|
||||||
header.put("Authorization", signature);
|
header.put("Authorization", signature);
|
||||||
header.put("X-Qiniu-Date", signDate);
|
header.put("X-Qiniu-Date", signDate);
|
||||||
header.put("Content-Type", "application/json");
|
header.put("Content-Type", "application/json");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user