Hasty Briefsbeta

双语

<antirez>

8 hours ago
  • V8的Math.random()伪随机数生成器在生成唯一ID时较弱,正如迈克·马龙所发现的那样。
  • 唯一ID需要有状态机制(如带持久性的计数器)或大范围的均匀分布随机空间,以使碰撞概率可忽略不计。
  • 使用足够大的随机空间(如160比特)使得碰撞概率极低,即使在高速生成速率下也是如此。
  • 一种无状态方法使用密码学哈希函数(如SHA1),结合来自/dev/urandom的种子和递增计数器,既快速可靠,又无需进行PRNG分析。
  • 使用操作系统熵源作为种子可以防止重启后相同序列的重放。
  • 使用HMAC将种子作为密钥、计数器作为消息,为生成的ID增加不可预测性。
  • 该技术被用于Disque项目中的分布式消息ID生成。