短链接的生成原理

  短链接的流行变得应用非常广泛,我们经常看到类似这样的链接:http://mrw.so/58vxB0那么实现原理是什么呢?
 
  短链接简单来说就是把一个很长的URL地址转化为相对简短的地址而且仍然可以正常使用,如把地址http://ganmall.com.cn/h/cat_1005_1033_3_0.html转化为http://mrw.so/58vxB0,当然我这里本来就比较短,不过对于再长的地址也是转化成为相同长度的短链接。
 
  短链接的例子已经介绍了,现在应用非常广泛,下面介绍算法原理。
 
短链接生成的算法原理
 
  一、短链接原理
 
  其实很简单 ,系统把一个长的地址 如
 
  http://ganmall.com.cn/h/detail/366.html
 
  首先用一个算法转换成 短地址
 
  http://mrw.so/4pnR6t
 
  然后把 k4e8-->http://ganmall.com.cn/h/detail/366.html的关系保存到数据库中
 
  当用户访问http://mrw.so/4pnR6t网址时,系统到数据库找到对应的URL地址,实现跳转。

\"短网址\"
 
  二、短链接算法
 
  MD5的生成的 ,其实这个算法主要是把长字符串变小 ,这个算法是不可逆的,所以别想着去直接反转短地址
 
  利用MD5的算法,其具体过程为:
 
  1. 将原始长链接进行MD5加密,为了避免防止算法泄漏,可以在原链接上添加自定义的字符串作为密钥。
 
  2. 把128位的MD分成四组,每组32位,对应一个候选短链接。
 
  3. 对于每个32位的数,将它与0x3FFFFFFF进行位与运算,取其低30位的数据。把得到的值与0x0000003D进行位与运算,再把得到的结果作为下标在字符表中选取字符,再把原数字右移5位进行相同操作,重复进行6次得到6个字符,即组成一个候选短链接地址。
 
  4. 在4个候选短链接中随机选择一个作为最终的短链接,把长短链接映射关系存入数据库中。
 
  三、短链接生成
 
  服务器收到一个短链接请求时,需要把从http地址中解析出短链接,然后将得到的短链接在数据库中进行查询,找到其对应的长连接,进而重定向到该长长链接对应的地址。另外,服务器在此时可以随意进行一些需要的统计工作。
 
  算法本质上就是一个长短链接的映射过程,那么一个简单的想法是用递增的序号来表示短链接,每次进来一个长链接时,把它映射成当前的序号,同时把序号递增以供下一个链接使用。因为链接地址同时使用的是a-z、A-Z和0-9这62个字符,把10进制的序号值转化为这个62进制的表示即可得到对应的短链接。