JAVA实现按模板发送信息

按短信模板生成短信

这里省略了发送短信的接口,只展示把数据与模板转化成最终发送数据的思路

    /**
     * 按短信模板生成短信
     *
     * @param map 数据{"code":"1234","captchaExpiration":"5"}
     * @param template  模板(您的动态码为:{code},{captchaExpiration}分钟内有效,请勿泄露!)
     * @return 短信内容(您的动态码为:1234,5分钟内有效,请勿泄露!)
     */
public static String buildMessage(Map<String,String> map, String template) {
    // 使用正则表达式匹配模板中的所有占位符
    Pattern pattern = Pattern.compile("\\{([^}]*)\\}");
    Matcher matcher = pattern.matcher(template);

    StringBuffer sb = new StringBuffer();
    while (matcher.find()) {
        String key = matcher.group(1); // 获取占位符的键
        String replacement = map.getOrDefault(key, "{UNKNOWN}").toString(); // 如果键不存在,则使用默认值 "{UNKNOWN}"
        matcher.appendReplacement(sb, replacement);
    }
    matcher.appendTail(sb);

    return sb.toString();
}

将字符串转换为MD5散列值

    /**
     * 将字符串转换为MD5散列值
     *
     * @param input 需要加密的字符串
     * @return MD5散列后的字符串
     */
    public static String encryptToMD5(String input) {
        try {
            // 创建 MessageDigest 对象用于生成MD5散列
            MessageDigest md = MessageDigest.getInstance("MD5");

            // 执行消息摘要
            byte[] messageDigest = md.digest(input.getBytes(StandardCharsets.UTF_8));

            // 将 byte 数组转换为 hex 字符串
            BigInteger no = new BigInteger(1, messageDigest);
            StringBuilder hashText = new StringBuilder(no.toString(16));

            // 如果产生的散列值不足32位,则用0填充
            while (hashText.length() < 32) {
                hashText.insert(0, "0");
            }

            return hashText.toString();
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("MD5 algorithm not found", e);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值