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

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

  

  1. public static string[] ShortUrl(string url)
  2. {
  3. //可以自定义生成MD5加密字符传前的混合KEY
  4. string key = "anech";
  5. //要使用生成URL的字符
  6. string[] chars = new string[]{
  7. "a" , "b" , "c" , "d" , "e" , "f" , "g" , "h" ,
  8. "i" , "j" , "k" , "l" , "m" , "n" , "o" , "p" ,
  9. "q" , "r" , "s" , "t" , "u" , "v" , "w" , "x" ,
  10. "y" , "z" , "0" , "1" , "2" , "3" , "4" , "5" ,
  11. "6" , "7" , "8" , "9" , "A" , "B" , "C" , "D" ,
  12. "E" , "F" , "G" , "H" , "I" , "J" , "K" , "L" ,
  13. "M" , "N" , "O" , "P" , "Q" , "R" , "S" , "T" ,
  14. "U" , "V" , "W" , "X" , "Y" , "Z"
  15. };
  16.  
  17. //对传入网址进行MD5加密
  18. string hex = MD5(key + url);
  19.  
  20. string[] resUrl = new string[4];
  21.  
  22. for (int i = 0; i < 4; i++)
  23. {
  24. //把加密字符按照8位一组16进制与0x3FFFFFFF进行位与运算
  25. int hexint = 0x3FFFFFFF & Convert.ToInt32("0x" + hex.Substring(i * 8, 8), 16);
  26. string outChars = string.Empty;
  27. for (int j = 0; j < 6; j++)
  28. {
  29. //把得到的值与0x0000003D进行位与运算,取得字符数组chars索引
  30. int index = 0x0000003D & hexint;
  31. //把取得的字符相加
  32. outChars += chars[index];
  33. //每次循环按位右移5位
  34. hexint = hexint >> 5;
  35. }
  36. //把字符串存入对应索引的输出数组
  37. resUrl[i] = outChars;
  38. }
  39. return resUrl;
  40. }
  41.  
  42. public static string MD5(String input)
  43. {
  44. byte[] res = new MD5CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(input));
  45. return BitConverter.ToString(res).Replace("-", "");
  46. }

转载 URL短地址压缩算法的更多相关文章

  1. 【转】C# URL短地址压缩算法及短网址原理解析

    这篇文章主要介绍了C# URL短地址压缩算法及短网址原理解析,本文重点给出了算法代码,需要的朋友可以参考下 短网址应用已经在全国各大微博上开始流行了起来.例如QQ微博的url.cn,新郎的sinaur ...

  2. 【转】URL短地址压缩算法 微博短地址原理解析 (Java实现)

    转自: URL短地址压缩算法 微博短地址原理解析 (Java实现) 最近,项目中需要用到短网址(ShortUrl)的算法,于是在网上搜索一番,发现有C#的算法,有.Net的算法,有PHP的算法,就是没 ...

  3. URL短地址压缩算法 微博短地址原理解析 (Java实现)

    原博客地址:http://blog.csdn.net/xyz_lmn/article/details/8057270 最近,项目中需要用到短网址(ShortUrl)的算法,于是在网上搜索一番,发现有C ...

  4. C#如何实现url短地址?C#短网址压缩算法与短网址原理入门

    c# url短地址压缩算法与短网址原理的例子,详细介绍了短网址的映射算法,将长网址md5生成32位签名串,分为4段,每段8个字节,然后生成短网址,具体见文本实例. 短网址映射算法: 将长网址md5生成 ...

  5. 短地址TinyURL的API使用

    TinyURL的短地址服务超过10年了,很稳定,官方没有给出API连接,其实很简单: API: 调用:http://tinyurl.com/api-create.php?url=http://URL, ...

  6. short url短链接原理

    一.什么是短链接 含义:就是把普通网址,转换成比较短的网址.比如:http://t.cn/RlB2PdD 这种,比如:微博:这些限制字数的应用里都用到这种技术. 优点:短.字符少.美观.便于发布.传播 ...

  7. Java工具类-基于SnowFlake的短地址生成器

    Twitter的SnowFlake算法,使用SnowFlake算法生成一个整数,然后转化为62进制变成一个短地址URL /** * Twitter的SnowFlake算法,使用SnowFlake算法生 ...

  8. 如何做系列(4)-微博URL短网址生成算法原理(java版、php版实现实例)

    短网址(Short URL),顾名思义就是在形式上比较短的网址.通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流.目前已经有许多类似服务,借助短网址您可以用简短的网址替代 ...

  9. 短网址url接口api,url短链接(t.cn、url.cn)生成

    简要说明 短网址api接口有很多格式,不同的接口生成的短网址格式也不同,比如常见的t.cn.url.cn.w.url.cn等格式.总而言之短网址接口就是用来将一个冗长的链接缩短成10个字符以内的短链接 ...

随机推荐

  1. activate mod_rewrite How To Set Up mod_rewrite for Apache on Ubuntu 14.04 Apache Rewrite url重定向功能的简单配置

    https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_rewrite-for-apache-on-ubuntu-14-0 ...

  2. mysql 创建函数ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_f

    mysql 创建函数的时候 报错 ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL D ...

  3. &lt;Android 开源库&gt; GreenDAO 使用方法具体解释&lt;译文&gt;

    简单介绍 greenDAO是一个开源的Android ORM,使SQLite数据库的开发再次变得有趣. 它减轻了开发者处理底层的数据库需求,同一时候节省开发时间. SQLite是一个非常不错的关系型数 ...

  4. python collections模块 计数器(counter)

    一.计数器(counter) Counter是对字典类型的补充,用于追踪值的出现次数. ps:具备字典的所有功能 + 自己的功能 把我写入的元素出现的多少次都计算出来 import collectio ...

  5. PageHelper中默认PageInfo成员变量

    以下是PageHelper中默认PageInfo的成员变量,方便以后自己使用 //当前页 private int pageNum; //每页的数量 private int pageSize; //当前 ...

  6. RNNs

    什么是RNN网络? RNNs背后的主要目的是要使用序列本身的顺序信息.在传统的神经网络里,我们假设输入(输出)是条件独立的.但是,在许多任务里,这是个非常非常差的假设.如果你想预测一个序列中的下一个单 ...

  7. 在MFC中使用一个单独的类实现数据在各个类之间的传递

    第一步:使用VS2010创建一个基于MFC的单文档程序,然后  编译 运行 确定没有问题. 第二步:添加一个名叫CGszCommonData  类. 第三步:在应用程序类的头文件里 添加#includ ...

  8. 微信小程序组件radio

    表单组件radio:官方文档 Demo Code: Page({ data: { items: [ {name: 'USA', value: '美国'}, {name: 'CHN', value: ' ...

  9. SQL Server 使用 Hierarchyid 操作层次结构数据

    层次结构数据定义为一组通过层次结构关系互相关联的数据项. 在层次结构关系中,一个数据项是另一个项的父级或子级. sql server2008开始内置的 hierarchyid 数据类型使存储和查询层次 ...

  10. idea打jar包-MapReduce作业提交到hadoop集群执行

    https://blog.csdn.net/jiaotangX/article/details/78661862 https://liushilang.iteye.com/blog/2093173