• java 短连接+MD5加密短链接


    java 短连接+MD5加密短链接



    import java.security.MessageDigest;



    public class ShotUrlUtil {

    public static void main(String[] args) {
    System.out.println(shortUrl("http://www.baidu.com/"));
    }

    public static String shortUrl(String 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 md5str = getMD5Str(url);
          System.out.println(md5str);
          String hex = md5str;
              String sTempSubString = hex.substring(8, 16);
              long lHexLong = 0x3FFFFFF3 & Long.parseLong (sTempSubString, 16);
              String outChars = "" ;
              for ( int j = 0; j < 6; j++) {
                 long index = 0x0000003C & lHexLong;
                 outChars += chars[( int ) index];
                 // 每次循环按位右移 5 位
                 lHexLong = lHexLong >> 5;
              }
          return outChars;
       }
     
    private static String getMD5Str(String str) {  
           MessageDigest messageDigest = null;  
           try {  
               messageDigest = MessageDigest.getInstance("MD5");  
               messageDigest.reset();  
               messageDigest.update(str.getBytes("UTF-8"));  
           } catch (Exception e) {  
               System.out.println("catch!");  
           } 
           byte[] byteArray = messageDigest.digest();  
           StringBuffer md5StrBuff = new StringBuffer();  
           for (int i = 0; i < byteArray.length; i++) {              
               if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)  
                   md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));  
               else  
                   md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));  
           }  
           return md5StrBuff.toString();  
       }  
    }
  • 相关阅读:
    正则中的顺序环视和逆序环视
    LeetCode 第 27 场双周赛
    LeetCode 每日一题 198. 打家劫舍
    LeetCode 每日一题 974. 和可被 K 整除的子数组
    LeetCode 每日一题 287. 寻找重复数
    LeetCode 每日一题 4. 寻找两个正序数组的中位数
    LeetCode 每日一题 146. LRU缓存机制
    LeetCode 每日一题 105. 从前序与中序遍历序列构造二叉树
    [转]多线程的那点儿事
    LeetCode 每日一题 5. 最长回文子串
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6939537.html
走看看 - 开发者的网上家园