short url 算法
来源:互联网 发布:淘宝没有代付选项 编辑:程序博客网 时间:2024/04/30 03:28
package com.glodon.paas.coqui.util;import java.security.MessageDigest;public class TokenGenerator { private final static String[] md5Chars = {"0","1" ,"2" ,"3" ,"4" ,"5" ,"6" ,"7" ,"8" ,"9" ,"A" ,"B" ,"C" ,"D" ,"E" ,"F" }; public static String generate(String str) { // 可以自定义生成MD5加密字符传前的混合KEY String key = "glodoncloud"; // 要使用生成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 = encodeByMD5(key+str); String[] resUrl = new String[4]; for (int i = 0; i < 4; i++) { // 把加密字符按照8位一组16进制与0x3FFFFFFF进行位与运算 long hexint = Long.valueOf( "3FFFFFFF", 16) & Long.valueOf( hex.substring(i * 8,(i+1)*8), 16); String outChars = ""; for (int j = 0; j < 6; j++) { // 把得到的值与0x0000003D进行位与运算,取得字符数组chars索引 int index = (int) (Long.valueOf ("0000003D" , 16) & hexint); // 把取得的字符相加 outChars += chars[index]; // 每次循环按位右移5位 hexint = hexint >> 5; } // 把字符串存入对应索引的输出数组 resUrl[i] = outChars; } return resUrl[0]; } /**对字符串进行MD5编码*/ private static String encodeByMD5(String originString){ if (originString!=null) { try { //创建具有指定算法名称的信息摘要 MessageDigest md5 = MessageDigest. getInstance("MD5"); //使用指定的字节数组对摘要进行最后更新,然后完成摘要计算 byte[] results = md5.digest(originString.getBytes()); //将得到的字节数组变成字符串返回 String result = byteArrayToHexString(results); return result; } catch (Exception e) { e.printStackTrace(); } } return null ; } /** * 轮换字节数组为十六进制字符串 * @param b 字节数组 * @return 十六进制字符串 */ private static String byteArrayToHexString(byte[] b){ StringBuffer resultSb = new StringBuffer(); for(int i=0;i<b.length;i++){ resultSb.append( byteToHexString(b[i])); } return resultSb.toString(); } private static String byteToHexString(byte b){ int n = b; if(n<0) n=256+n; int d1 = n/16; int d2 = n%16; return md5Chars [d1] + md5Chars[d2]; } public static void main(String[] args){ System. out.println(TokenGenerator.generate(UUIDUtil. getUUIDStr()));; }}
0 0
- short url 算法
- Short URL implement
- Short URL service
- Django short url
- short url design
- Implement your own short url
- 网址短连接 short url
- 短址(short URL)原理及其实现
- 短址(short URL)原理及其实现
- 短址(short URL)原理及其实现
- 短址(short URL)原理及其实现
- 短址(short URL)原理及其实现
- 短网址(Short URL)服务
- short url 介绍及实现机制
- URL Shortening URL 压缩算法
- 矩阵相乘,快速算法 HDOJ 4291 A Short problem
- url解析c算法
- 短址(short URL)原理及其实现 来源:http://blog.csdn.net/beiyeqingteng
- hadoop中使用MapReduce编程实例(转)
- Known Issues: Grid Infrastructure Redundant Interconnect and ora.cluster_interconnect.haip (Doc ID 1
- js 读取excel 文件
- iOS 开发中遇到的各种证书的详细说明以及申请讲解
- java SpringMVC 邮件发送配置及Code
- short url 算法
- 关于RAC Interconnect之HAIP
- 解决Unix-like、Windows系统之间文本换行符不同的问题
- IOS打包验证时,提示使用了私有API的问题
- Python学习03--流程控制语句
- 织梦仿站系列教程第十七讲——通用底部的制作
- Log4J详细配置
- mysql操作类
- 【Leetcode】Longest Consecutive Sequence