简单实现短链接算法
来源:互联网 发布:思科 大数据 编辑:程序博客网 时间:2024/05/21 09:17
package com.mfyk.util;
import java.security.MessageDigest;
public class Code {
private Code(){}
/** 短链接可选字符 */
private final static char[] chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".toCharArray();
/** md5的char值 */
private final static char[] md5chars = "1234567890EADCBF".toCharArray();
/** 30位的long类型数值,右移运算可以达30 */
static long max = Long.parseLong("3FFFFFFF", 16);
/** 61的最大值以便于从chars中选择字符 */
static long min = Long.parseLong("0000003D", 16);
public static String shortText(String md5, int start){
/** 短链接返回数据 */
StringBuilder returnValue = new StringBuilder();
String subHex = md5.substring(start*8, (start+1)*8);
/** 获取字串运算索引 */
long idx = max & Long.parseLong(subHex, 16);
/** 获取6位数的短码,6*5=30 */
for(int k = 0; k < 6; k++){
int index = (int) (min & idx);
returnValue.append(chars[index]);
idx = idx >> 5;
}
return returnValue.toString();
}
/**
* md5
* @param s
* @return
*/
public final static String md5(String s) {
try {
byte[] btInput = s.getBytes();
/** 获得MD5摘要算法的 MessageDigest 对象 */
MessageDigest mdInst = MessageDigest.getInstance("MD5");
/** 使用指定的字节更新摘要 */
mdInst.update(btInput);
/** 获得密文 */
byte[] md = mdInst.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = md5chars[byte0 >>> 4 & 0xf];
str[k++] = md5chars[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
return null;
}
}
}
import java.security.MessageDigest;
public class Code {
private Code(){}
/** 短链接可选字符 */
private final static char[] chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".toCharArray();
/** md5的char值 */
private final static char[] md5chars = "1234567890EADCBF".toCharArray();
/** 30位的long类型数值,右移运算可以达30 */
static long max = Long.parseLong("3FFFFFFF", 16);
/** 61的最大值以便于从chars中选择字符 */
static long min = Long.parseLong("0000003D", 16);
public static String shortText(String md5, int start){
/** 短链接返回数据 */
StringBuilder returnValue = new StringBuilder();
String subHex = md5.substring(start*8, (start+1)*8);
/** 获取字串运算索引 */
long idx = max & Long.parseLong(subHex, 16);
/** 获取6位数的短码,6*5=30 */
for(int k = 0; k < 6; k++){
int index = (int) (min & idx);
returnValue.append(chars[index]);
idx = idx >> 5;
}
return returnValue.toString();
}
/**
* md5
* @param s
* @return
*/
public final static String md5(String s) {
try {
byte[] btInput = s.getBytes();
/** 获得MD5摘要算法的 MessageDigest 对象 */
MessageDigest mdInst = MessageDigest.getInstance("MD5");
/** 使用指定的字节更新摘要 */
mdInst.update(btInput);
/** 获得密文 */
byte[] md = mdInst.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = md5chars[byte0 >>> 4 & 0xf];
str[k++] = md5chars[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
return null;
}
}
}
1 0
- 简单实现短链接算法
- 短链接生成算法
- 用PHP实现微博里面短链接的算法
- 微博短链接生成算法与简单实现
- php实现短链接系统
- php实现短链接系统
- 短链接算法收集与分析
- 短链接算法收集与分析
- 简单实现dijstra算法和floyd算法并打印所有最短路径
- 计算机操作系统调度算法——短作业优先算法简单实现
- 短网址的简单实现
- Android短链接方式实现消息推送
- 短链接服务架构设计与实现
- 长URL链接转短链接算法(JAVA)
- 长URL链接转短链接算法(JAVA)
- 最短路径算法实现
- 最短路径算法实现
- 短链接
- Qt 中动态库(.so)静态库(.a)的使用
- Fragment的生命周期
- java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 39 path $
- javascript运行机制之执行顺序详解(修正原作者一处错误)
- MySql:charset和collation的设置
- 简单实现短链接算法
- (5)学习ArduPilot源码——shetch范例
- Kafka开发实战(二)-集群环境搭建
- 数据结构之位运算篇
- 28-Merge Two Sorted Lists
- BOA服务器的搭建以及移植到开发板
- 第一篇
- Mac OS 终端常用命令基础
- 商业智能数据营销该怎么做?