我有一个要求,用户必须看到为订单生成的图钉,并且必须共享/用作该特定订单的授权代码。
所以我正在寻找一个库,该库可以生成6位数字的随机唯一引脚,可用于每次交易。
请分享您对此的想法。
谢谢..
答案 0 :(得分:1)
您可以尝试 SecureRandom
从here提取
java.security.SecureRandom类:此类提供了加密强度高的随机数生成器(RNG)。加密强度高的随机数至少符合FIPS 140-2“加密模块的安全性要求”第4.9.1节中指定的统计随机数生成器测试。此外,SecureRandom必须产生不确定的输出。因此,传递给SecureRandom对象的任何种子材料都必须不可预测,并且所有SecureRandom输出序列必须具有加密强度。
java.util.Random类:“随机”中定义的类在密码上不强,并且选择的数字也不是完全随机的,因为使用了确定的数学算法(基于Donald E. Knuth的减法随机数)生成器算法)用于选择它们。因此,将此类用于需要高度安全性的任务(例如创建随机密码等)是不安全的。
使用SecureRandom的示例:
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
int myInt = sr.nextInt(9000000) + 1000000;
答案 1 :(得分:0)
请使用Apache库。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.6</version>
</dependency>
int random = RandomUtils.nextInt(1, 7);
参考:https://www.java67.com/2018/01/3-ways-to-generate-random-integers-on.html
答案 2 :(得分:0)
我正在寻找一个可以生成随机唯一引脚
的库
如果生成随机整数,则不能保证它总是唯一的。如果使用6个数字,则用户有百万分之一的机会获得相同的订单号。您可以增加位数,也可以允许字母字符减少获得相同订单号的机会。
但是,真正确保每个订单号唯一的唯一方法是保持订单总数的连续计数。那么每个用户的订单号实际上就是您收到的第n个订单。
答案 3 :(得分:-2)
您可以使用内置的** java.util.Random类**在Java中手动生成pin。您可以在身份验证中使用它来生成六位数的随机数图钉。
int rand_int1 = rand.nextInt(1000000);
if rand_int1 has 6 digits
print(rand_int1)
else
generate(again)
这将生成一个六位数的随机数。