当前位置:   article > 正文

【Java 8 新特性】Java 8 Random 和 SecureRandom 新变化详解 | 生成随机字符串_securerandom是什么时候有的

securerandom是什么时候有的

Java 8 Random 和 SecureRandom 新变化详解 | 生成随机字符串

java 8中,在RandomSecureRandom类中增加了一些新方法。

这些方法就像intslongsdouble一样。

它们分别返回IntStreamLongStreamDoubleStream

SecureRandom类扩展了Random类。

在这个页面中,我将提供一个密码生成器的例子。

java.util.Random

Random类产生伪随机数。

对于每个实例的调用,都会返回一个伪随机数。

Random类是线程安全的。

Random类有一些支持Java 8的新方法。

ints:IntStream的形式返回integer值。
longs:LongStream的形式返回long值。
doubles:DoubleStream的形式返回double值。

查找生成密码的示例。

RandomDemo.java

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.stream.IntStream;
public class RandomDemo {
	private static final List<Integer> VALID_PWD_CHARS = new ArrayList<>();
	static {
	    IntStream.rangeClosed('0', '9').forEach(VALID_PWD_CHARS::add);    // 0-9
	    IntStream.rangeClosed('a', 'z').forEach(VALID_PWD_CHARS::add);    // a-z
	}
	public static void main(String[] args) {
	    int passwordLength = 8;
	    System.out.println("---Generated Password---");
	    for(int i=0;i<5;i++) {
	       new Random().ints(passwordLength, 0, VALID_PWD_CHARS.size())
                            .map(VALID_PWD_CHARS::get).forEach(s -> System.out.print((char) s));
	       System.out.println();
	    }
	}
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

输出

---Generated Password---
6mx3dunz
teuf505p
03nym5w3
zez006fc
y9q0rbs3 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

java.security.SecureRandom

SecureRandom是加密的强数字发生器(RNG)。

SecureRandom扩展了Random类,并通过在java 8中添加的新方法得到了丰富。

找到SecureRandom的例子。

SecureRandomDemo.java

import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;
public class SecureRandomDemo {
	private static final List<Integer> VALID_PWD_CHARS = new ArrayList<>();
	static {
	    IntStream.rangeClosed('0', '9').forEach(VALID_PWD_CHARS::add);    // 0-9
	    IntStream.rangeClosed('A', 'Z').forEach(VALID_PWD_CHARS::add);    // A-Z
	    IntStream.rangeClosed('a', 'z').forEach(VALID_PWD_CHARS::add);    // a-z
	    IntStream.rangeClosed('!', '*').forEach(VALID_PWD_CHARS::add);    // !-*
	}
	public static void main(String[] args) {
	    int passwordLength = 8;
	    System.out.println("---Generated Password---");
	    for(int i=0;i<5;i++) {
	        new SecureRandom().ints(passwordLength, 0, VALID_PWD_CHARS.size())
                            .map(VALID_PWD_CHARS::get).forEach(s -> System.out.print((char) s));
		System.out.println();
	    }
	}
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

输出

---Generated Password---
Qq2R%SsQ
7PjxGxkO
xkMgQq2h
dljs4*w%
55"tSGJ5 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

参考文献

【1】Java 8 Random and SecureRandom Changes Example

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/1004599
推荐阅读
相关标签
  

闽ICP备14008679号