将一条长链接转成短链接。

来源:互联网 发布:国际域名和国内域名 编辑:程序博客网 时间:2024/06/11 16:04
import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Random;public class ShortUrlText {public static void main(String[] args) {System.out.println("请输入网址");String slongurl="http://www.51bi.com/bbs/_t_278433840/";String[] aresult=shorturl(slongurl);for(int i=0;i<aresult.length;i++){System.out.println("["+i+"]:"+aresult[i]);}Random random=new Random();int j=random.nextInt(4);System.out.println("短链接:"+aresult[j]);}public  static String[] shorturl(String url){// 可以自定义生成 MD5 加密字符传前的混合 KEYString key="test"; // 要使用生成 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","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",};System.out.println(chars.length);// 对传入网址进行 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];            // 每次循环按位右移 6 位            lHexLong= lHexLong >>6;            }         // 把字符串存入对应索引的输出数组            resUrl[i] = outchars;}return resUrl;}/**     * MD5加密(32位大写)         * @param src     * @return     */private static String md5ByHex(String string) {// TODO Auto-generated method stubtry {MessageDigest md=MessageDigest.getInstance("MD5");byte[] b=string.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 (NoSuchAlgorithmException e) {// TODO Auto-generated catch blockreturn "";}}}

0 0
原创粉丝点击