转载 URL短地址压缩算法

文章转载http://www.nowamagic.net/webdesign/webdesign_ShortUrlInTwitter.php

1
2
3
4
5
6
7
8
9
10
/// <summary>
/// 生成salt
/// </summary>
/// <returns></returns>
public static string GenerateSalt()
{
    byte[] data = new byte[0x10];
    new RNGCryptoServiceProvider().GetBytes(data);
    return Convert.ToBase64String(data);
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
   public static string[] ShortUrl(string url)
   {
       //可以自定义生成MD5加密字符传前的混合KEY    
       string key = "anech";
       //要使用生成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 = MD5(key + url);
 
       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;
               //把取得的字符相加    
               outChars += chars[index];
               //每次循环按位右移5位    
               hexint = hexint >> 5;
           }
           //把字符串存入对应索引的输出数组    
           resUrl[i] = outChars;
       }
       return resUrl;
   }
 
   public static string MD5(String input)
   {
       byte[] res = new MD5CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(input));
       return BitConverter.ToString(res).Replace("-", "");
   }
posted @   anech  阅读(1686)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
点击右上角即可分享
微信分享提示