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

    }
}
相关推荐
晓13137 小时前
第七章 【C语言篇:文件】 文件全面解析
linux·c语言·开发语言
愚者游世7 小时前
Delegating Constructor(委托构造函数)各版本异同
开发语言·c++·程序人生·面试·改行学it
一 乐7 小时前
校园二手交易|基于springboot + vue校园二手交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
KIKIiiiiiiii7 小时前
微信个人号API二次开发中的解决经验
java·人工智能·python·微信
梵刹古音8 小时前
【C语言】 指针基础与定义
c语言·开发语言·算法
80530单词突击赢8 小时前
SpringBoot整合SpringMVC全解析
java·spring boot·后端
Ekehlaft8 小时前
这款国产 AI,让 Python 小白也能玩转编程
开发语言·人工智能·python·ai·aipy
rit84324998 小时前
MATLAB中Teager能量算子提取与解调信号的实现
开发语言·matlab
开源技术8 小时前
Python GeoPandas基础知识:地图、投影和空间连接
开发语言·ide·python
vx1_Biye_Design8 小时前
基于Spring Boot+Vue的学生管理系统设计与实现-计算机毕业设计源码46223
java·vue.js·spring boot·spring·eclipse·tomcat·maven