它的原理就是从数字经过一个加盐(salted)算法产生一个哈希(hash)字符串。这样算法就是通过混淆使结果具有不可预测性,而唯一性依然由数字本身来达成,从而得到(类似 youtube 里的)足够短,不可预测且唯一的 ID。
使用方法也很简单。先设定一个字符串作为 salt。
var Hashids = require("hashids"),
hashids = new Hashids("this is my salt”);
然后对数字(准确来说是数字数组)进行编码
var hash = hashids.encrypt(12345);
// Nkk9
var hash = hashids.encrypt(683, 94108, 123, 5);
// aBMswoO2UB3Sj
对数组编码可以有很有趣的用法,比如需要在一个分布式的环境里使用,可以使用机器编号 + 序列数字组合数组然后再编码。
有编码就有解码
var numbers = hashids.decrypt("NkK9”);
// [12345]
编码的输出会随着数字的增大而变长,为了达到足够混淆,它可以指定最少长度。
hashids = new Hashids("this is my salt", 8);
var hash = hashids.encrypt(1);
// gB0NV05e
还有其它选项,比如控制输出所使用的字符
官网:https://hashids.org/