在Java中产生6位数的密码

时间:2019-06-11 09:59:44

标签: java

我有一个要求,用户必须看到为订单生成的图钉,并且必须共享/用作该特定订单的授权代码。

所以我正在寻找一个库,该库可以生成6位数字的随机唯一引脚,可用于每次交易。

请分享您对此的想法。

谢谢..

4 个答案:

答案 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)

这将生成一个六位数的随机数。