在javascript

时间:2016-10-06 01:01:01

标签: javascript node.js random cryptography unique

我正在创建一个我需要生成唯一ID的应用程序。

当生成ID时,避免冲突的最佳方法是,它是简单的强制生成 - 然后 - 检查,还是有一种方法来支持独特的生成。

我确信蛮力方法会好一段时间,但我觉得像谷歌这样的公司没有使用这种方法。

其他的是如何在node.js中实际生成它们。

我想过从'0 - 63'生成int,然后像这样解析为base-64:

var map = {
    0:0, 1:1 ... 16:"Q" ... 63:"/"
}; /* I used object so you can see the indexes, 
this would be an array - or even a string? */
for (var i = IDLENGTH, id=""; i--;) id+=map[~~(Math.random*64)];

然而,这似乎是不合适的,特别是首先考虑map

我在另一篇SO帖子中看到了这段代码

console.log(new Buffer("Hello World").toString('base64'));
> SGVsbG8gV29ybGQ=

这似乎更有意义,但这似乎不符合我的需要,这不是char集的转换吗?

1 个答案:

答案 0 :(得分:0)

这是一个非常开放的问题,但您可能希望生成UUID。基本上它是一个随机的128位数。如果正确完成,重复的概率为extremely low。我相信对于大多数应用程序来说,不需要检查,但您可能仍然希望这样做。

使用经过良好测试的库而不是自己实现,我建议使用node-uuid。生成好的随机数与加密操作非常相似 - 要做到正确并非易事。