package com.ruoyi.common.utils;
|
|
import com.ruoyi.common.utils.http.HttpUtils;
|
import org.springframework.beans.factory.annotation.Value;
|
|
import java.nio.charset.StandardCharsets;
|
import java.security.MessageDigest;
|
import java.security.NoSuchAlgorithmException;
|
import java.util.Base64;
|
|
public class SmsUtils {
|
@Value("${sms.url}")
|
private String url="http://103.21.119.249:3131/http/send.aspx";
|
@Value("${sms.loginName}")
|
private String loginName="qddxfsyy";
|
@Value("${sms.passWord}")
|
private String passWord="Qyfy_0718";
|
|
public String send(String tel,String messageContent){
|
|
String key= keyForMd5(loginName,passWord);
|
String content="{\"LoginName\":\""+loginName+"\",\"PassWord\":\""+passWord+"\"," +
|
"\"Key\":\""+key+"\"," +
|
"\"Tel\":\""+tel+"\",\"MessageContent\":\""+messageContent+"\"}";
|
String result="";
|
result= HttpUtils.sendPost(url, Base64.getEncoder().encodeToString(content.getBytes()) );
|
|
return result;
|
}
|
|
public String keyForMd5(String name, String pass)
|
{
|
return md5(md5(pass) + pass + md5(name));
|
}
|
|
|
|
public static String md5(String str) {
|
try {
|
// 1. 获取 MD5 消息摘要实例
|
MessageDigest md = MessageDigest.getInstance("MD5");
|
// 2. 使用 UTF-8 编码将字符串转换为字节数组并计算哈希
|
byte[] hashBytes = md.digest(str.getBytes(StandardCharsets.UTF_8));
|
// 3. 将字节数组转换为十六进制字符串(小写)
|
return bytesToHex(hashBytes).toLowerCase();
|
} catch (NoSuchAlgorithmException e) {
|
// MD5 是标准算法,正常情况下不会抛出此异常
|
throw new RuntimeException("系统不支持 MD5 算法", e);
|
}
|
}
|
/**
|
* 将字节数组转换为十六进制字符串
|
*
|
* @param bytes 字节数组
|
* @return 十六进制字符串
|
*/
|
private static String bytesToHex(byte[] bytes) {
|
StringBuilder sb = new StringBuilder(bytes.length * 2);
|
for (byte b : bytes) {
|
// 将每个字节的高4位和低4位分别转换为十六进制字符
|
sb.append(String.format("%02x", b));
|
}
|
return sb.toString();
|
}
|
}
|