1

我正在研究需要安全地分配随机、短(~40 位)ID 的东西。它们需要是唯一的,这意味着在中央服务器上进行。

每次只使用一个新的 SecureRand 都会遇到生日问题,并开始花费更长的时间来生成新条目。

什么是更好的方法?

4

1 回答 1

0

你是对的,如果只是随机选择它们,40 位太短而无法避免冲突,即使你只需要几个。事实上,无论您使用哪种算法,将它们称为“安全”确实太短了。但是,假设您需要的数量远少于全部万亿个,并且您实际上并不需要更大空间的安全性,那么您实际上只有一个选择:拒绝抽样。即随机生成并与现有的进行比较。正如你所说,这不会“开始花费更长的时间”,直到你真正接近那个万亿,因为你可以找到具有 O(1) 散列的使用过的那些。使用不会重复的 40 位循环生成器之类的东西并仅跟踪“最后一个”是不安全的,并且还会使并行化变得困难。

于 2013-09-28T08:20:53.830 回答