我正在尝试创建独特的随机标识符策略。我不想存储或查询已经使用的所有ID,我想用作产生数字0 - >的序列的非唯一性来源。 Integer.MAX_VALUE的。我缺少的东西是一个函数,它将序列中的每个数字投射到相同范围内的另一个数字。
你能指点一些快速双向功能吗? (可以用Java编写)。
提前致谢
答案 0 :(得分:1)
如果你想制作" unguessable"随机数字,您可以SecureRandom.nextLong()
并将其附加System.nanoTime()
。 nanoTime部分更容易猜测,但在很短的时间后不会重复。 nextLong部分将来可能重复,但很难猜测。
请注意,如果您的应用程序中有任何硬限制的双重驱动功能,并且有人能够获取并撤消它(获取源代码,反编译类文件等),那么您的ID将会受到影响:这将很容易用给定的一个来查找下一个/上一个数字。