在 .NET 中使用 Sqids 快速的为数字 ID 披上神秘短串,轻松隐藏敏感数字!

前言

在当今数字化时代,数据的安全性和隐私性至关重要。随着网络应用的不断发展,数字 ID 作为数据标识和访问控制的关键元素,其保护显得尤为重要。然而,传统的数字 ID 往往直接暴露了一些敏感信息,如顺序编号或数据库主键ID,这不仅增加了数据泄露的风险,还可能让不法分子有机可乘。

本文大姚将带领大家在 .NET 中使用 Sqids 快速的为数字 ID 披上神秘短串,从而轻松隐藏敏感数字,保护数据安全。

DotNetGuide编程学院

DotNetGuide编程学院是一个专注于C#/.NET/.NET Core学习、工作、面试干货和实战教程分享的知识星球!当然这里不仅仅只有C#/.NET/.NET Core还有前端、云原生(Docker,K8s)、分布式,微服务、实用工具、学习书籍、AIGC、AI赋能、求职和招聘资讯、热点资讯等多个领域,我们致力于构建一个积极向上、和谐友善的.NET技术交流、学习平台。无论您是初学者还是有丰富经验的开发者,我们都希望能为您提供更多的价值和成长机会。

大姚发放了100张DotNetGuide编程学院知识星球68元新人立减优惠券,有兴趣的小伙伴可以领券加入(当前应该是星球最优惠的阶段),加入后如果感觉不值得,3天内知识星球APP右上角退出,直接全额退款,无任何套路!

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 安装:

简单使用示例

internal class Program
    {
        static void Main(string[] args)
        {
            // 使用默认选项创建 SqidsEncoder 实例
            var sqids = new SqidsEncoder<int>();

            // 编码单个数字
            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<int>(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

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。

  • GitHub开源地址:https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

  • Gitee开源地址:https://gitee.com/ysgdaydayup/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

学习是一个永无止境的过程,你知道的越多,你不知道的也会越多,在有限的时间内坚持每天多学一点,你一定能成为你想要成为的那个人。不积跬步无以至千里,不积小流无以成江海!

基于PYNQ-Z2实现手写数字识别卷积神经网络硬件加速器源代码(CNN硬件加速器入门级项目),该项目是个人毕设项目,答辩评审分达到98分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 基于PYNQ-Z2实现手写数字识别卷积神经网络硬件加速器源代码(CNN硬件加速器入门级项目)基于PYNQ-Z2实现手写数字识别卷积神经网络硬件加速器源代码(CNN硬件加速器入门级项目)基于PYNQ-Z2实现手写数字识别卷积神经网络硬件加速器源代码(CNN硬件加速器入门级项目)基于PYNQ-Z2实现手写数字识别卷积神经网络硬件加速器源代码(CNN硬件加速器入门级项目)基于PYNQ-Z2实现手写数字识别卷积神经网络硬件加速器源代码(CNN硬件加速器入门级项目)基于PYNQ-Z2实现手写数字识别卷积神经网络硬件加速器源代码(CNN硬件加速器入门级项目)基于PYNQ-Z2实现手写数字识别卷积神经网络硬件加速器源代码(CNN硬件加速器入门级项目)基于PYNQ-Z2实现手写数字识别卷积神经网络硬件加速器源代码(CNN硬件加速器入门级项目)基于PYNQ-Z2实现手写数字识别卷积神经网络硬件加速器源代码(CNN硬件加速器入门级项目)基于PYNQ-Z2实现手写数字识别卷积神经网络硬件加速器源代码(CNN硬件加速器入门级项目)基于PYNQ-Z2实现手写数字识别卷积神经网络硬件加速器源代码(CNN硬件加速器入门级项目)基于PYNQ-Z2实现手写数字识别卷积神经网络硬件加速器源代码(CNN硬件加速器入门级项目)基于PYNQ-Z2实现手写数字识别卷积神经网络硬件加速器源代码(CN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值