如何用php实现URL网址16Python十进制转二进制算法加密

短链接就不说了大家已经都清楚了,如下所示就是短链接:

算法描述:使用6个字符来表示短链接我们使用ASCII字符中的'a'-'z','0'-'5',共计32个字符做为集合每个字符有32种状态,六个芓符就可以表示32^6()那么如何得到这六个字符,描述如下:

对传入的长URL进行Md5得到一个32位的字符串,这个字符串变化很多是16的32次方,基本上可以保证唯一性将这32位分成四份,每一份8个字符这时机率变成了16的8次方,是这个数字碰撞的机率也比较小啦,关键是后面的┅次处理我们将这个8位的字符认为是16Python十进制转二进制算法整数,也就是1*('0x'.$val)然后取0-30位,每5个一组算出他的整数值,然后映射到我们准备嘚32个字符中最后就能够得到一个6位的短链接地址。

下面这个函数使用了纯随机的方式来生成一个短链接虽然我们可以通过查询操作来確保不重复使用短链接,可是... 这样真的靠谱吗~~

几乎所有的微薄都提供了缩短网址的服务其原理就是将一个url地址按照一定的算法生成一段字符串,然后加在一个短域名后面边成了一个新的url地址数据库中会存放这个短地址和原始的地址,当用户点击这个新的短地址后短地址服务会根据短域名后面的几个字符串从数据库中读出原来的地址然后页面进荇跳转 。

比如新浪微薄中的url 是 是其域名 其后面跟着的是7位算出来的字符串。

方法一:使用哈希库自定义算法

因为文本中显示太长的url会比較乱,或者采用省略显示的方式,或者采用短url的方式.

为了同时方便统计点击数以及进行内容过滤.实现了一个生成短url值的方法.

为了防止你的hash值被破解,可以在生成md5值的时候加入你自己的salt.

这样即便直到你的code_map也不能破解到原始url了.

为了让结果更加随机,把每次循环没有使用的第二个bit保存到e里媔.这样可以让结果冲突率更小.

我要回帖

更多关于 Python十进制转二进制算法 的文章

 

随机推荐