先决条件: 用Java生成随机数 JAVA安全安全随机类: 此类提供了一个加密强随机数生成器(RNG)。加密强随机数最低限度地符合中规定的统计随机数生成器测试 FIPS 140-2,加密模块的安全要求 ,第4.9.1节。此外,SecureRandom必须产生非确定性输出。因此,传递给SecureRandom对象的任何种子材料都必须是不可预测的,并且所有SecureRandom输出序列必须具有强大的加密能力。 JAVAutil。随机类别: Random中定义的类在密码学上不强,所选的数字也不是完全随机的,因为使用了确定的数学算法(基于Donald E.Knuth的减法随机数生成器算法)来选择它们。因此,将此类用于需要高安全级别的任务(如创建随机密码等)是不安全的。
null
随机与安全随机
- 尺寸: 一个随机类只有48位,而SecureRandom最多可以有128位。因此,在SecureRandom中重复的几率更小。
- 种子生成: Random使用系统时钟作为种子/或生成种子。因此,如果攻击者知道种子产生的时间,就可以很容易地复制它们。但是SecureRandom会从您的操作系统中获取随机数据(它们可以是击键之间的间隔等——大多数操作系统都会收集这些数据并将其存储在文件中—/dev/Random和/dev/urandom(对于linux/solaris),并将其用作种子。
- 破解密码: 在随机的情况下,只需要2^48次尝试,有了今天先进的cpu,就有可能在实际时间打破它。但对于securerandom,需要进行2^128次尝试,这将需要多年时间才能与当今先进的机器实现收支平衡。
- 生成函数: 标准的Oracle JDK 7实现使用所谓的线性同余生成器在java中生成随机值。util。随机的而Secure Random实现了SHA1PRNG算法,该算法使用SHA1生成伪随机数。该算法计算一个真实随机数(使用熵源)上的SHA-1散列,然后将其与一个64位计数器连接,每个操作递增1。
- 安全: 因此,java。util。random类不得用于安全关键应用程序或保护敏感数据。
使用java生成随机数。util。随机的
JAVA
// A Java program to demonstrate // random number generation // using java.util.Random; import java.util.Random; public class generateRandom { public static void main(String args[]) { // create instance of Random class Random rand = new Random(); // Generate random integers in range 0 to 999 int rand_int1 = rand.nextInt( 1000 ); int rand_int2 = rand.nextInt( 1000 ); // Print random integers System.out.println( "Random Integers: " + rand_int1); System.out.println( "Random Integers: " + rand_int2); } } |
输出:
Random Integers: 956Random Integers: 678
使用java生成随机数。安全安全随机;
JAVA
// A Java program to demonstrate secure // random number generation // using java.security.SecureRandom import java.security.SecureRandom; public class generateRandom { public static void main(String args[]) { // create instance of SecureRandom class SecureRandom rand = new SecureRandom(); // Generate random integers in range 0 to 999 int rand_int1 = rand.nextInt( 1000 ); int rand_int2 = rand.nextInt( 1000 ); // Print random integers System.out.println( "Random Integers: " + rand_int1); System.out.println( "Random Integers: " + rand_int2); } } |
输出:
Random Integers: 817Random Integers: 500
本文由 萨凯特·库马尔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END