推荐一个开源项目,用于生成类似 YouTube 的短字符串哈希,从而隐藏数字(如数据库 ID)的真实值。
01
项目简介
hashids.net 是一个小型的 .NET 包,能够将数字(如 347)或数字数组(如 [27, 986])转换为简短且难以猜测的字符串(如 yr8 或 3kTMd)。
而且这些字符串可以被解码回原始数字,非常适合用于隐藏实际的数据库 ID、将多个参数合并为一个短字符串 ID,或者生成用户友好的唯一标识符。
02
功能特点
1、生成短唯一 ID
支持从整数生成短字符串 ID,仅支持非负整数(包括零)。
生成的 ID 不是顺序的,即使输入是递增的,输出也会保持不可预测性。
2、支持多种输入
支持单个数字或数字数组(支持 int 和 long 类型)。
支持自定义字符集和盐值(salt),确保生成的哈希对每个应用都是唯一的。
3、可配置性
支持设置最小哈希长度,确保生成的字符串至少达到指定长度。
尝试避免生成包含基本英文脏话的哈希值。
4、可逆性
虽然哈希是可逆的,但设计上尽量保证其不可预测性,适合用于隐藏敏感信息(但不适合用于加密)。
03
使用方法
1、安装依赖库
Install-Package hashids.net
2、编码示例
var hashids = new Hashids("this is my salt");var hash = hashids.Encode(12345); // 编码单个数字 NkK9var hashLong = hashids.EncodeLong(666555444333222L); // 编码长整型数字 KVO9yy1oO5jvar hashMultiple = hashids.Encode(683, 94108, 123, 5); // 编码多个数字 aBMswoO2UB3Sj
3、解码示例
var hashids = new Hashids("this is my salt");var numbers = hashids.Decode("NkK9"); // 解码字符串var numberSingle = hashids.DecodeLong("KVO9yy1oO5j"); // 解码长整型数字var numberLong = hashids.Decode("aBMswoO2UB3Sj"); // 解码多个数字
04
项目地址
最后欢迎加入我的知识星球,带你从零学习:三层架构与领域驱动设计架构!
- End -
分享一套.NetCore从入门到精通视频教程
领取专属 10元无门槛券
私享最新 技术干货