在 .NET 中使用 Sqids 快速的为数字 ID 披上神秘短串,轻松隐藏敏感数字!
笔记哥 /
05-09 /
27点赞 /
0评论 /
701阅读
## 前言
在当今数字化时代,数据的安全性和隐私性至关重要。随着网络应用的不断发展,数字 ID 作为数据标识和访问控制的关键元素,其保护显得尤为重要。然而,传统的数字 ID 往往直接暴露了一些敏感信息,如顺序编号或数据库主键ID,这不仅增加了数据泄露的风险,还可能让不法分子有机可乘。
本文大姚将带领大家在 .NET 中使用 Sqids 快速的为数字 ID 披上神秘短串,从而轻松隐藏敏感数字,保护数据安全。
## Sqids 介绍
Sqids 是一个基于 C# 编写、开源的轻量级工具库,它允许你从数字生成类似 YouTube 的 ID。它可以将数字(如 127)编码为字符串(如 yc3),然后你可以将这些字符串解码回原始数字。当你想要将数字(如顺序数值 ID)混淆为看似随机的字符串,以便在 URL 和其他地方使用时,Sqids 就非常派得上用场。
## 功能特点
- Sqids 生成的 ID 是唯一的,并且始终可以解码回原始数字。
- 可以将多个数字捆绑成一个 ID,然后可以将该 ID 解码回相同的数字集。
- Sqids 生成的 ID 确保不包含常见的脏话,因此您可以在用户可以看到的地方安全地使用这些 ID(例如在 URL 中)。
- .NET 7 及以上版本支持所有整数类型(如 int、long、byte、short 等),而旧版本仅支持 int。
- 采用基于 span 的优化实现,最小化内存分配并最大化性能。
## 创建一个控制台应用
首先我们创建一个名为:`SqidsExercise` 的 .NET 9 控制台应用:


## 安装 Sqids NuGet 包
在 NuGet 包管理器中搜索 `Sqids` 安装:

## 简单使用示例
```csharp
internal class Program
{
static void Main(string[] args)
{
// 使用默认选项创建 SqidsEncoder 实例
var sqids = new SqidsEncoder();
// 编码单个数字
var id = sqids.Encode(99);
Console.WriteLine($"编码单个数字: {id}"); // 输出:Q8P
// 解码单个 ID
var number = sqids.Decode(id).Single();
Console.WriteLine($"解码单个 ID '{id}': {number}"); // 输出:99
// 编码多个数字
var ids = sqids.Encode(7, 8, 9);
Console.WriteLine($"编码多个数字 7, 8, 9: {ids}"); // 输出:ylrR3H
// 解码多个 ID
var numbers = sqids.Decode(ids);
Console.WriteLine($"解码多个 ID '{ids}': {string.Join(", ", numbers)}"); // 输出:7, 8, 9
// 使用自定义选项创建 SqidsEncoder 实例
var customSqids = new SqidsEncoder(new SqidsOptions
{
Alphabet = "mTHivO7hx3RAbr1f586SwjNnK2lgpcUVuG09BCtekZdJ4DYFPaWoMLQEsXIqyz",//自定义字母表(注意:字母表至少需要 3 个字符)
MinLength = 5,//最小长度,默认情况下,Sqids 使用尽可能少的字符来编码给定的数字。但是,如果你想让你的所有 ID 至少达到一定的长度(例如,为了美观),你可以通过 MinLength 选项进行配置:
BlockList = { "whatever", "else", "you", "want" } //自定义黑名单,Sqids 自带一个大的默认黑名单,这将确保常见的诅咒词等永远不会出现在您的 ID 中。您可以像这样向这个默认黑名单添加额外项:
});
// 使用自定义 SqidsEncoder 编码和解码
var customId = customSqids.Encode(8899);
Console.WriteLine($"使用自定义 SqidsEncoder 编码: {customId}"); // 输出:i1uYg
var customNumber = customSqids.Decode(customId).Single();
Console.WriteLine($"使用自定义 SqidsEncoder 解码: {customNumber}"); // 输出:8899
}
}
```
## 项目源码地址
更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。
- 源码开源地址:https://github.com/sqids/sqids-dotnet
- 本文示例源码:https://github.com/YSGStudyHards/DotNetExercises/tree/master/SqidsExercise
本文来自投稿,不代表本站立场,如若转载,请注明出处:http//www.knowhub.vip/share/2/3185
- 热门的技术博文分享
- 1 . ESP实现Web服务器
- 2 . 从零到一:打造高效的金仓社区 API 集成到 MCP 服务方案
- 3 . 使用C#构建一个同时问多个LLM并总结的小工具
- 4 . .NET 原生驾驭 AI 新基建实战系列Milvus ── 大规模 AI 应用的向量数据库首选
- 5 . 在Avalonia/C#中使用依赖注入过程记录
- 6 . [设计模式/Java] 设计模式之工厂方法模式
- 7 . 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
- 8 . SQL 中的各种连接 JOIN 的区别总结!
- 9 . JavaScript 中防抖和节流的多种实现方式及应用场景
- 10 . SaltStack 远程命令执行中文乱码问题
- 11 . 推荐10个 DeepSeek 神级提示词,建议搜藏起来使用
- 12 . C#基础:枚举、数组、类型、函数等解析
- 13 . VMware平台的Ubuntu部署完全分布式Hadoop环境
- 14 . C# 多项目打包时如何将项目引用转为包依赖
- 15 . Chrome 135 版本开发者工具(DevTools)更新内容
- 16 . 从零创建npm依赖,只需执行一条命令
- 17 . 关于 Newtonsoft.Json 和 System.Text.Json 混用导致的的序列化不识别的问题
- 18 . 大模型微调实战之训练数据集准备的艺术与科学
- 19 . Windows快速安装MongoDB之Mongo实战
- 20 . 探索 C# 14 新功能:实用特性为编程带来便利