hashids.net:一个让你的ID不再暴露的小工具,用短哈希隐藏敏感数字

2 阅读2分钟

推荐一个开源项目,用于生成类似 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 项目地址

github.com/ullmark/has…

- End -

更多开源项目: github.com/bianchengle…