`
coffee_yan
  • 浏览: 36327 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

短信中URL长链接转短链接

 
阅读更多
package *.*.*.util;

import java.security.MessageDigest;
import java.util.Random;

import org.apache.log4j.Logger;

public class ShortUrlUtil {
	
	private static Logger logger = Logger.getLogger(ShortUrlUtil.class);
	
	public static String getShortURL(String url){
        String[] aResult = convertUrl(url);//将产生4组6位字符串
        Random random=new Random();
        //随机取一个作为短链
        int j=random.nextInt(4);//产成4以内随机数
        logger.info("短链接:"+aResult[j]+";长链接:"+url);
        return aResult[j];
	}
	
	private static String[] convertUrl(String url) {
		// 可以自定义生成 MD5 加密字符传前的混合 KEY
		String key = "qiuyouzone";
		// 要使用生成 URL 的字符
		String[] chars = new String[] { "a", "b", "c", "d", "e", "f", "g", "h",
				"i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
				"u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
				"6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H",
				"I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
				"U", "V", "W", "X", "Y", "Z"
		};
		// 对传入网址进行 MD5 加密
		String hex = md5ByHex(key + url);
		
		String[] resUrl = new String[4];
		for (int i = 0; i < 4; i++) {

			// 把加密字符按照 8 位一组 16 进制与 0x3FFFFFFF 进行位与运算
			String sTempSubString = hex.substring(i * 8, i * 8 + 8);

			// 这里需要使用 long 型来转换,因为 Inteper .parseInt() 只能处理 31 位 , 首位为符号位 ,
			// 如果不用long ,则会越界
			long lHexLong = 0x3FFFFFFF & Long.parseLong(sTempSubString, 16);
			String outChars = "";
			for (int j = 0; j < 6; j++) {
				// 把得到的值与 0x0000003D 进行位与运算,取得字符数组 chars 索引
				long index = 0x0000003D & lHexLong;
				// 把取得的字符相加
				outChars += chars[(int) index];
				// 每次循环按位右移 5 位
				lHexLong = lHexLong >> 5;
			}
			// 把字符串存入对应索引的输出数组
			resUrl[i] = outChars;
		}
		return resUrl;
	}
	
	/**
	 * MD5加密(32位大写)
	 * 
	 * @param src
	 * @return
	 */
	private static String md5ByHex(String src) {
		try {
			MessageDigest md = MessageDigest.getInstance("MD5");
			byte[] b = src.getBytes();
			md.reset();
			md.update(b);
			byte[] hash = md.digest();
			String hs = "";
			String stmp = "";
			for (int i = 0; i < hash.length; i++) {
				stmp = Integer.toHexString(hash[i] & 0xFF);
				if (stmp.length() == 1)
					hs = hs + "0" + stmp;
				else {
					hs = hs + stmp;
				}
			}
			return hs.toUpperCase();
		} catch (Exception e) {
			return "";
		}
	}
	
}
分享到:
评论

相关推荐

    百度API生成短链代码

    - **文本消息**:短信或邮件中插入短链接,方便接收者快速访问目标页面。 #### 四、注意事项 - **安全性考虑**:虽然短链接便于分享,但也存在一定的安全风险。建议使用可信的服务提供商,并对生成的短链接进行审核...

    计算机科学与技术-基于URL缩短技术的服务设计方案及其应用场景

    文章深入探讨了URL重定向机制以及解决哈希碰撞的问题策略,确保生成短链接的安全性和可靠性。针对可能存在的关键字过滤问题提出了具体解决方案。 适用人群:软件开发者、互联网产品经理和服务架构师 使用场景及目标...

    ShortUrl:短地址项目,探索与部署

    如微博限定字数140、短信按照发文长短收费等2、我们经常需要将链接转成二维码的形式分享给他人,如果是长链的话二维码密集难识别,短链就不存在这个问题了。3、 链接太长在有些平台上无法自动识别为超链接; 如钉钉...

    link-shortener:链接缩短器服务

    在互联网中,长链接有时可能会显得冗长且不便分享,尤其是在社交媒体、短信或电子邮件等有限字符数的场景下。为了解决这个问题,链接缩短器服务应运而生。"link-shortener"项目就是一个典型的实现,它使用Python和...

    url-shortener:网址缩短

    在互联网中,长链接有时可能会带来不便,尤其是在社交媒体、短信或电子邮件中,短链接则更为实用。"url-shortener"项目正是为了解决这个问题,它提供了一个服务,可以将长网址转换为简短的、易分享的短网址。这个...

    fso:快速[链接]缩短器

    【fso:快速链接缩短器】是一个基于C语言编写的程序,主要功能是将长链接转化为短链接,方便在各种社交媒体、短信或者电子邮件中分享。这个工具可能使用了URL编码和哈希算法来实现链接的缩短。在互联网上,长链接有时...

    Shorty-crx插件

    在互联网上,长链接有时会带来不便,尤其是在社交媒体、电子邮件或者短信中分享链接时。短链接不仅更易于分享,还能节省空间,提高美观度。Shorty-crx插件选择tinyurl.com作为其URL缩短服务提供商。Tinyurl是一家...

    Lnkfy.com url shortener-crx插件

    这款插件的出现,旨在解决网络上长链接不便分享、记忆和管理的问题,尤其对于社交媒体、电子邮件或者短信等场景,短链接显得更为实用。 在描述中提到,该插件使用Lnkfy.com的服务来实现URL缩短功能。Lnkfy.com是一...

    nick-link:更长的链接缩短器

    在实际使用中,用户可以通过输入或粘贴长链接到应用程序,然后点击“缩短”按钮,后台JavaScript代码会处理这个请求,生成短链接,并将其显示给用户。用户还可以自定义短链接的别名,以创建更具个性化和记忆性的短...

    shortly-deploy

    在互联网上,长链接有时会显得冗长且不友好,而短链接则更方便在有限的字符限制下进行分享,如社交媒体平台或短信中。通过这个项目,我们可以了解到JavaScript在Web开发中的应用以及短链接服务的工作原理。 【核心...

    百度短网址-crx插件

    在互联网上,长网址往往在分享时显得冗长且不便记忆,尤其在社交媒体、邮件或者短信中,短网址的使用可以提高链接的可读性和易传播性。百度短网址服务利用百度公司的技术,将复杂的长网址转化为简洁的短链,同时保持...

    XView 6 - 长链缩短服务「XView 6 - Сервис сокращения длинных ссылок」-crx插件

    同意,即使你只是发表这样的URL在你的评论,通过邮件或短信发送,这将是有问题的,它看起来不是很...因此,你所有的问题,一个长的URL地址将解决我们独特的服务,可以减少或甚至隐藏你的任何链接,它会变得更可读和...

Global site tag (gtag.js) - Google Analytics