推荐一个开源项目,用于生成类似 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); // 编码单个数字 NkK9
var hashLong = hashids.EncodeLong(666555444333222L); // 编码长整型数字 KVO9yy1oO5j
var 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 -
更多开源项目: github.com/bianchengle…