短网址简介

来源:互联网 发布:怎样开淘宝店卖视频 编辑:程序博客网 时间:2024/06/09 15:34

短网址简介

首先来温习下短网址的相关知识:
1、首先要了解什么是短网址?简单的说明是:把你认为长的难记或放不下的本站网址用本功能生成一个简短网址,使用短网址即可直接访问它。
2、其次它有什么用?你发布的或看到的有价值信息,可能需要发给QQ、MSN、论坛等里的好友或者进行宣传,那么就可以使用生成这个简短的网址。
3、目前大多数的在线缩短网址都提供有API的。在Twitter的等息有字数限制的微博客及其他社交网络中得到了广泛的使用。可以更方便地在电子邮件、社交网络、微博和手机上传播,避免折行或超出字符限制。


实现自己的短网址需要如下步骤:

1.定义您自己的网址映射算法。
2.有一个数据库来存储映射的网址。
3.从数据库的短网址的映射找到原始的URL 


算法描述

1. 将长网址md5生成32位签名串,分为4段, 每段8个字节;
2. 对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理;
3. 这30位分成6段, 每5位的数字作为字母表的索引取得特定字符, 依次进行获得6位字符串;
4. 总的md5串可以获得4个6位串; 取里面的任意一个就可作为这个长url的短url地址;

 

 

例如:引自链接  http://qn-lf.iteye.com/blog/1084516

public   static   string [] ShortUrl( string  url)   {       //可以自定义生成MD5加密字符传前的混合KEY        string  key =  "Leejor" ;       //要使用生成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 = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(key + url,  "md5" );          string [] resUrl =  new   string [4];          for  ( int  i = 0; i < 4; i++)       {           //把加密字符按照8位一组16进制与0x3FFFFFFF进行位与运算            int  hexint = 0x3FFFFFFF & Convert.ToInt32( "0x"  + hex.Substring(i * 8, 8), 16);           string  outChars =  string .Empty;           for  ( int  j = 0; j < 6; j++)           {               //把得到的值与0x0000003D进行位与运算,取得字符数组chars索引                int  index = 0x0000003D & hexint;  //  0x0000003D即61,索引范围为0-61            //把取得的字符相加                outChars += chars[index];               //每次循环按位右移5位                hexint = hexint >> 5;           }           //把字符串存入对应索引的输出数组            resUrl[i] = outChars;       }       return  resUrl;   }   
然后将生成的短网址和长URL对应关系存入数据库中,当用户访问短网址时,便可以在数据库中查询对应的长URL,数据库表如下:

CREATE TABLE mappedURL (    shortCode char (6) not  null ,    lognURL  text not null ,    PRIMARY KEY  shortCodeInd (shortCode),    );   

原创粉丝点击