Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在研究需要安全地分配随机、短(~40 位)ID 的东西。它们需要是唯一的,这意味着在中央服务器上进行。
每次只使用一个新的 SecureRand 都会遇到生日问题,并开始花费更长的时间来生成新条目。
什么是更好的方法?
你是对的,如果只是随机选择它们,40 位太短而无法避免冲突,即使你只需要几个。事实上,无论您使用哪种算法,将它们称为“安全”确实太短了。但是,假设您需要的数量远少于全部万亿个,并且您实际上并不需要更大空间的安全性,那么您实际上只有一个选择:拒绝抽样。即随机生成并与现有的进行比较。正如你所说,这不会“开始花费更长的时间”,直到你真正接近那个万亿,因为你可以找到具有 O(1) 散列的使用过的那些。使用不会重复的 40 位循环生成器之类的东西并仅跟踪“最后一个”是不安全的,并且还会使并行化变得困难。