当前位置:首页 > java知识学习_java技术文章 > 正文

tinyurl.com加密解密与短网址链接设计实现原理

浏览4196+

一、短网址链接的实现原理

tinyurl.com是国外的一个很火的IT行业经常用的短链接生成服务的一个网站,只要我们拿一个长链接在该网站上点击生成就会给你生成一个很短的短网址链接,便于我们使用和记忆。

经过简化后的短链接在浏览器中输入时它就会自动跳转到我们初始的长链接的url上去,今天我们主要讲解一下tinyurl这个短链接功能的实现原理与设计思路。

1、短链接生成与映射入库

首先,数据库设计一张存储url的数据表,表中的字段有主键字段、长链接url和短链接url这三个字段,第一步。先将用户输入的长链接url存储到数据表中,然后生成一个主键字段。

存储url的数据表表结构

然后根据存储的长链接url采用一定的算法,可以是base64算法,也可以是哈希算法生成一个随机的字符串儿,将这个随机的短链接字符串存入到相应的对应的该主键下的数据表的数据中,形成一一对应映射的关系。

我们所要用的哈希算法base64算法,可以参考下面的代码:

哈希算法详细设计代码详情

扩展阅读:

TinyURL的实现原理

LeetCode TinyURL 的加密与解密(hash表)

URL加密解密完整解决方案

2、短连接请求跳转

短链接完成了一一映射入库之后,接下来的工作就简单了,当用户拿到生成的短链接在浏览器中发送请求时,就会跳到我们的后台,后台接收到tinyurl短连接的随机字符串,再应用相同的解密算法将该随机字符串解密推倒,就能得到该随机字符串在数据表中的主键ID,然后根据ID查询中对应的长链接,跳转到长链接的地址即可。

二、Base64实现tinyurl的加密与解密设计

上文中我们对tinyurl.com短链接生成的原理做了一个详细的分析,至此我们了解到url短链接生成的重中之重就是加密与解密,因此本章节会用代码实现url的加密与解密算法。

小编最先想到的加密解密算法就是base64算法,大家不清楚base64算法的,可以参考下面这篇文章讲解:《Java base64加密解密 两种实现方式》

下图是我们设计的用base64对url加密和解密的API方法:

base64加密和解密的方法详细设计代码

上图中的加密api用到了Base64.getEncoder()的方法,该方法就是将一个长链接url首先生成一个字节数组,然后对字节进行编码形成一个随机的字符串儿,这就是生成的加密的字符串。

而解密算法是调用的.getDecoder()方法,这个方法是传入一个短链接,将短链接生成字节数组,再根据编码规则进行解码成原先的最初始的url。

扩展阅读:

url加密解密技术有哪些?

短网址服务(TinyURL)生成算法

三、java调用短网址api的调用代码

接下来我们调用tinyurl.com提供的短链接生成的API,用Java代码调用其api生成一个短连接应用在Java项目中。

tinyurl.com的API链接地址如下:http://tinyurl.com/api-create.php

java封装httpclient工具创建get请求详细代码

上图是我们应用的一个工具叫httpclient,在Java中该工具是用来调用外部请求的一个很好的工具,上图中的代码就是根据传入一个url参数,将该url经过一定的编码规则比如urt8编码规则创建一个HTTP的get请求。

httpclient发送get请求详细代码

然后调用sendHttpGet()方法,该方法书写内容主要是包装httpclient的实例对象,创建httpclient对象,然后调用execute()方法发送HTTP的get请求。

测试tinyurl.com的API生成短连接代码

然后发送的get请求请求的就是tinyurl.com提供的API,返回的参数就是生成到短链接的url。

扩展阅读:

短地址TinyURL的API使用

[LeetCode] Design TinyURL 设计精简URL地址

百度云网盘视频教程分享

责任声明:文章信息由IT教程屋小编精心整理总结编排而成,倾注了心血和汗水,转载时请遵循行业规范务必注明文章作者、来源及本页链接,谢谢合作!
本篇文章标题:tinyurl.com加密解密与短网址链接设计实现原理
本篇文章url地址:http://www.itjcw123.cn/3794.html