推荐一个基于 .NET 的开源短链接生成项目

短链接生成

这是一个基于.NET开源的短链生成及监控系统,它包含了在线生成短链、短链跳转长链、支持短链访问次数以及Web监控页面,可以帮助我们更容易地生成短链、监控短链!

功能介绍

  • •  基于.NET 6开发的后端及Web管理界面

  • •  支持自定义短链长度

  • •  支持在线短链生成及跳转长链

  • •  支持实时统计短链访问次数

  • •  支持多种持久化方式:MySQL/PostgreSQL/SqlServer(2012及以上)

  • •  傻瓜式配置,开箱即用

截图预览

登录页

2d18910330605f1e3ab7bd8d2b6836ea.png

首页Dashboard

ac48d83c525b4be1d26bf36392ad82a1.png

列表页

c1282b5e16c2650370f793b1210b85f6.png

短URL生成原理

标准Base64编码表如下:

2214faeb8926a1b0e7458f03b873c5b6.png

其中“+”和“/”在 URL 中会被编码为“%2B”以及“%2F”,需要进行再编码,因此直接使用标准 Base64 编码进行短URL 编码并不合适,所以,我们需要针对 URL 场景对 Base64 编码进行改造,Base64 编码表中的 62,63 进行编码移除,更新为Base62编码。

混淆加密算法设计

1ab4f4cf8d4a10d4fe1a3b3213c1f76d.png
  1. 1. 将标准编码随机打乱 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

举例:打乱成:s9LFkgy5RovixI1aOf8UhdY3r4DMplQZJXPqebE0WSjBn7wVzmN2Gc6THCAKhaut

  1. 1. 6位长度标准编码与打乱后编码的对应关系

    b84966a1f0acb0928fc8da2afe36de4e.png

可以看出,虽然打乱了,但还顺序性还是很明显

3.将前面补0再倒转,由于6位长度最大11位,为了避免倒转后超过该数值,因此补到10位.

f92307484de048582fecf7cd980c029c.png

恢复混淆解密算法设计

dd98730f1ec9e045d0c7d61b1188f276.png

将请求收到的短链Key根据打乱后的Base62编码转成十进制数,补0到10位,然后倒转就得到原来的短链Id

822b6a5c66f961aeac0a1fbf9b2d7e0e.png

往期推荐:

功能强大,基于 .NET 实现的分布式锁

一行代码,监控 C# 方法执行耗时

Sejil - 开箱即用的 .NET 日志管理组件

CsGo - C#并发流程控制框架,单线程调度每秒100万次以上

C# 开发的高速 .NET 模板引擎

项目地址

https://github.com/Bryan-Cyf/SuperShortLink

44d9cffa13fd86f16dd1cff41e8c595c.png

分享

5a79f81873ec35e89a54adc39c5bbe76.png

点收藏 

b11984107f2bfe00a6550d2ee5d9a6c1.png

点点赞

8fe22eb35090133471853194b3b4a900.png

点在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值