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(); } }