肥客泉

肥客联邦
自由无止境.自由的引领.自由的联盟.自由让你我腾飞!为了同一目标而奋斗,为了同一信念而聚一堂,为了网络事业的明天而烈火青春.
肥客因您的支持而成长,因您的关注而精彩闪亮!

肥客是专业的网络应用服务商。我们的团队凭借扎实的技术与优质的服务为企业、公司、政府等部门量身定制软件与网站的网络应用和用户体验。有非凡志向,才有非凡成就。

Hashids如何生成唯一且不可预测的 ID

它的原理就是从数字经过一个加盐(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

还有其它选项,比如控制输出所使用的字符


官网:http://hashids.org/

评论

© 肥客泉 | Powered by LOFTER