Is UUID.randomUUID() suitable for use as a one-time password?的后续问题,其中接受的答案暗示您不需要122位(例如UUID)来保证足够的随机性。
答案 0 :(得分:1)
这取决于实际上无法猜测的复杂程度。
首先列出猜测是如此不切实际以至于几乎无法使用的时间段,例如一年(365天)。
将时间段除以使用邮件中的链接发出单个请求所需的时间。 (即,不是单个请求 - 响应的时间,而是使用并行处理的频率。)例如0.1秒,在一年的时间段内给出315360000个请求。
乘以活动代码的数量,并将其乘以2,以补偿查找有效代码的平均时间。例如,100个代码给出63072000000个组合。
对于该示例,您将需要36个随机位(2 36 = 68719476736)以获得几乎无法猜测的代码。