【发布时间】:2016-04-01 19:09:05
【问题描述】:
我需要编写一个生成器,该生成器将生成一个用于双因素身份验证实施的 8 位数字。目前我正在争论:
- 在 0 到 9 之间生成 8 个随机数字并创建一个包含这些数字的字符串
- 生成一个介于 10000000 和 99999999 之间的随机数
这两种方法之间唯一明显的区别是第一种方法允许第一个数字为 0,但我不确定第二种方法的更广泛范围是否更安全。
这两种方法都将涉及使用 SecureRandom,除非有更好的方法。我正在使用 Java 6。
大多数双重身份验证服务如何生成其代码?哪种方法更安全和/或被认为是更好的做法,还是无关紧要?
【问题讨论】:
-
超级简单,google 可以帮忙吗?
-
随机函数允许您设置要在其中生成数字的范围。将其与将每个数字分配给数组/向量中的位置的循环结合起来,您就有了工作程序。
-
在处理代码时最好扩大搜索空间。不用在每个地方都使用 0-9,您会显着减少搜索空间。
-
由于您使用的是
SecureRandom,这两种方法都会为您提供相同的随机性。在第二种方法中,您可以创建从 0 到 99999999 的数字,然后用零填充它。找不到原因你应该忽略这个范围..