java工具类 根据长链接生成短链码 使用 MD5 哈希算法

使用 MD5 哈希算法的特性保证对于不同的输入,生成的哈希值是唯一的。

只要链接不同,生成的短链码就不会重复

java 复制代码
import lombok.extern.slf4j.Slf4j;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

/**
 * java 根据长链接生成短链码 工具类
 */
@Slf4j
public class ConversionUtils {

    public static String generateShortCode(String longUrl, int urlLength) {
        if (urlLength < 4) {
            urlLength = 8; // 默认长度为 8
        }

        StringBuilder sb = new StringBuilder(urlLength);
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] digest = md.digest(longUrl.getBytes());
            String base64Encoded = Base64.getEncoder().encodeToString(digest);

            int nLen = 0;
            for (int i = 0; i < base64Encoded.length(); i++) {
                char c = base64Encoded.charAt(i);
                if (c != '/' && c != '+') {
                    sb.append(c);
                    nLen++;
                }
                if (nLen == urlLength) {
                    break;
                }
            }
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            // 处理算法不可用的异常
        }
        return sb.toString();
    }

    public static void main(String[] args) {

        System.out.println( generateShortCode("https://example.com/very-long-url-path",6));

    }
}
相关推荐
daixin8848几秒前
cursor无法正常使用gpt5.5等模型解决方案
java·redis·cursor
小短腿的代码世界2 分钟前
Qt文件系统与IO深度解析:从QFile到异步文件操作
开发语言·qt
韦禾水1 小时前
记录一次项目部署到tomcat的异常
java·tomcat
曦月合一1 小时前
树莓派安装jdk、tomcat、vnc、谷歌浏览器开机自启等环境配置
java·tomcat·树莓派
harder3211 小时前
RMP模式的创新突破
开发语言·学习·ios·swift·策略模式
jinanwuhuaguo1 小时前
OpenClaw工程解剖——RAG、向量织构与“记忆宫殿”的索引拓扑学(第十三篇)
android·开发语言·人工智能·kotlin·拓扑学·openclaw
Rust研习社1 小时前
使用 Axum 构建高性能异步 Web 服务
开发语言·前端·网络·后端·http·rust
此剑之势丶愈斩愈烈1 小时前
openssl 自建证书
java
面汤放盐1 小时前
何时使用以及何时不应使用微服务:没有银弹
java·运维·云计算
0xDevNull2 小时前
Spring Boot 自动装配:从原理到实践
java·spring boot·后端