关于短网址的一点疑惑
现在微博上常用的短网址,比如http://url.cn/2hytQx这样的,大致看了下,都说是通过对原网址进行MD5处理后得到的。
然后就有个问题了,MD5不是属于单向Hash函数无法还原么?
那我怎么通过在页面点击短url跳转到原来的URL网址?这一步不是其实就是在对MD5处理后的网址的一个还原操作么?
有懂得人求指教。
[解决办法]
为什么非要还原回去呢?你把原始的名字经过md5计算一下和输入的短的名字对比一下就知道啦
[解决办法]
怕不是还原吧。
短网址与原网址的对应关系存放在数据库中,收到短网址请求后,从数据库中找到对应的原网址,转向到原网址即可。
楼主,你说呢?
[解决办法]
数据库存一个 短网址->原始网址 对应表即可
[解决办法]
md5据我了解类似数据指纹一样是不可逆的,你提供给用户的MD5短url链接与原来的url链接的对应关系服务器应该可以获取到。
[解决办法]
以你帖子中http://url.cn/2hytQx为例:
你点击后,请求肯定是发给http://url.cn这个服务器的,这个服务器会解析得到参数2hytQx,然后查服务器那边数据库中2hytQx对应的网址为http://ditu.google.com/?q=22.974669,114.316089,然后服务器将你的请求转向到http://ditu.google.com/?q=22.974669,114.316089即可。
问题是:http://url.cn这个服务器是谁的?
打开http://url.cn可以看到,将转向到腾讯徽博,因此,这个服务器应该是腾讯提供的。
其实,谁都可以提供一个这样的服务,比如:
你可以申请一个域名:xxx.yyy.com,并提供一个接口,将一个网址转换成一个唯一的短地址(可以由MD5来生成),如将http://www.baidu.com转换成a3sf(我乱写的),然后你在你服务器上的数据库中存下a3sf与http://www.baidu.com的对应关系。如果某人通过http://xxx.yyy.com/a3sf来访问你的网站,你的服务器解析参数得到a3sf,然后从数据库中查到对应的网址为http://www.baidu.com,然后将请求转向到http://www.baidu.com即可。