短网址功能实现
来源:互联网 发布:寻找客户的软件 编辑:程序博客网 时间:2024/05/01 15:42
先来看看短网址映射算法的理论(网上找到的资料)
1)将长网址md5生成32位签名串,分为4段, 每段8个字节;
2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理;
3)这30位分成6段, 每5位的数字作为字母表的索引取得特定字符, 依次进行获得6位字符串;
4)总的md5串可以获得4个6位串; 取里面的任意一个就可作为这个长url的短url地址;
1)将长网址md5生成32位签名串,分为4段, 每段8个字节;
2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理;
3)这30位分成6段, 每5位的数字作为字母表的索引取得特定字符, 依次进行获得6位字符串;
4)总的md5串可以获得4个6位串; 取里面的任意一个就可作为这个长url的短url地址;
Java代码如下:
import java.security.GeneralSecurityException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class ToolBox {public static void main(String args[]) throws GeneralSecurityException {String url="http://hi.baidu.com";String shorturl = shortUrl(url);System.out.println("short url selected: " + shorturl);}public static String shortUrl(String url) throws NoSuchAlgorithmException {//可以自定义生成MD5加密字符传前的混合KEY String key = "Leejor"; //要使用生成URL的字符 String[] chars = new String[]{ "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","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"}; //创建具有指定算法名称的信息摘要 MessageDigest md = MessageDigest.getInstance("MD5"); //使用指定的字节数组对摘要进行最后更新,然后完成摘要计算 byte[] results = md.digest(url.getBytes()); //将得到的字节数组变成字符串 StringBuffer resultString = new StringBuffer(100); for(int i=0; i<results.length; i++) { int x = results[i] + 128; resultString.append(chars[x & 0x0F]); resultString.append(chars[x >> 4]); }// System.out.println(resultString.toString());// System.out.println(resultString.length()); for(int i=0; i<4; i++) { long hexint = 0x3FFFFFFF & Long.valueOf(resultString.substring(i*8, i*8+8), 16); StringBuffer shorturl=new StringBuffer(6); for(int j=0; j<6; j++) { long index = 0x0000003D & hexint; shorturl.append(chars[(int) index]); hexint = hexint >> 5; }// System.out.println("short url " + i +": " + shorturl.toString()); //如果shorturl与现有的其他短网址不冲突,则返回 return shorturl.toString(); } //如果都冲突,就返回空值return null;}}
- 短网址功能实现
- 短网址实现方法
- 短网址(ShortUrl)实现
- 短网址(ShortUrl)实现
- PHP实现长网址与短网址
- 短网址的简单实现
- python实现短网址系统
- 超简单的短网址php实现
- 超简单的短网址php实现
- 短网址(短链)实现唤起App
- 利用google的短网址服务去实现简化网址
- 短网址
- 短网址
- 短网址
- 短网址
- 短彩信限制功能实现
- flask制作一个粗糙简单的短网址功能
- 调用百度短网址API接口进行短网址的转换(Java程序的实现)
- C++学习方法
- mysql创建定时任务
- 修改时清除字段内容的SQL语句
- vb.net UltraChart画柱状图
- Java socket中isClose()和isConnected()
- 短网址功能实现
- 注册应用程序到url协议上及其简单应用
- mysql 插入更新多条数据的效率问题
- 使用 <map> 库创建关联容器
- mamp 简单的网页
- Titanium-HttpClient_send_xml_json_Tes
- RMAN-20202: tablespace not found in the recovery catalog
- 图片与二进制文件的互转
- 为什么要用专业ETL工具?