短网址简介

短网址简介

首先来温习下短网址的相关知识:
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),    
);   

你可能感兴趣的:(数据库,加密,算法,String,null,url)