/*
 *    Copyright 2012-2013 The Haohui Network Corporation
 */
package com.haohui.common.utils;

/**
 * @project baidamei
 * @author cevencheng <cevencheng@gmail.com>
 * @create 2012-11-10 上午1:15:05
 */
public class ShortUrlGenerator {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 长连接: http://tech.sina.com.cn/i/2011-03-23/11285321288.shtml
		// 新浪解析后的短链接为: http://t.cn/h1jGSC
		String sLongUrl = "http://tech.sina.com.cn/i/2011-03-23/11285321288.shtml"; // 3BD768E58042156E54626860E241E999
		String[] aResult = shortUrl(sLongUrl);
		// 打印出结果
		for (int i = 0; i < aResult.length; i++) {
			System.out.println("[" + i + "]:::" + aResult[i]);
		}
	}

	public static String[] shortUrl(String url) {
		// 可以自定义生成 MD5 加密字符传前的混合 KEY
		String key = "wuguowei";
		// 要使用生成 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 sMD5EncryptResult = (new CMyEncrypt()).getMD5OfStr(key + url);
		String sMD5EncryptResult = MD5.md5Encode(key +  url);
		String hex = sMD5EncryptResult;

		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;
	}
}
最近下载更多
111222222  LV1 2023年2月10日
yonikoui  LV2 2020年7月21日
ydm_zzp  LV2 2019年12月6日
erajiezhang  LV1 2019年12月3日
jiazhiheng  LV10 2019年11月15日
lixiaoqiandudu  LV1 2019年9月11日
三儿123456  LV1 2019年9月10日
kingadmin  LV2 2019年8月9日
sz9808  LV1 2019年7月23日
eq8888  LV1 2019年6月21日
最近浏览更多
zl2569837365  LV1 2023年3月14日
111222222  LV1 2023年2月10日
月光yueguang 2022年12月16日
暂无贡献等级
crosa_Don  LV18 2022年7月19日
天险无涯  LV15 2022年4月25日
1241312369  LV1 2022年4月8日
488291556  LV5 2021年11月22日
尹恒yingying  LV18 2021年8月24日
yinxiaochen 2021年2月25日
暂无贡献等级
joooooo  LV5 2020年12月30日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友