Java SecureRandom nextBytes()方法及示例
java.security.SecureRandom 类的 nextBytes() 方法是用来生成用户指定数量的随机字节的。
如果之前没有调用setSeed,对这个方法的第一次调用会迫使这个SecureRandom对象进行自我播种。如果之前调用了setSeed,这种自我播种就不会发生。
语法
public void nextBytes(byte[] bytes)
参数: 该方法以待填入随机字节的数组为参数。
注意
- 这些程序将不会在在线IDE上运行。每次Secure Random类都会产生随机输出:
下面是说明NextBytes()方法的例子。
例子1 :
// Java program to demonstrate// nextBytes() method import java.security.*;import java.util.*; public class GFG1 { public static void main(String[] argv) { try { // creating the object of SecureRandom SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); // Declaring the string variable String str = "Tajmahal"; // Declaring the byte Array // converting string into byte byte[] b = str.getBytes(); // printing the byte array System.out.println("Byte array before operation : " + Arrays.toString(b)); // generating user-specified number of random bytes // using nextBytes() method sr.nextBytes(b); // printing the new byte array System.out.println("Byte array after operation : " + Arrays.toString(b)); } catch (NoSuchAlgorithmException e) { System.out.println("Exception thrown : " + e); } catch (ProviderException e) { System.out.println("Exception thrown : " + e); } }}
输出
Byte array before operation : [84, 97, 106, 109, 97, 104, 97, 108]Byte array after operation : [-79, -110, -18, -31, -54, -36, 63, -61]
注意: 以下程序在GeeksForGeeks IDE上会出现以下异常,但在任何命令提示符(JDK)上都能有效运行。
Exception thrown : java.security.ProviderException: init failed
例2 :
// Java program to demonstrate// nextBytes() method import java.security.*;import java.util.*; public class GFG1 { public static void main(String[] argv) { try { // creating the object of SecureRandom SecureRandom sr = new SecureRandom(new byte[] { 1, 2, 3, 4 }); // Declaring the string variable String str = "Tajmahal"; // Declaring the byte Array b byte[] b = str.getBytes(); // printing the byte array System.out.println("Byte array before operation : " + Arrays.toString(b)); // generating user-specified number of random bytes // using nextBytes() method sr.nextBytes(b); // printing the new byte array System.out.println("Byte array after operation : " + Arrays.toString(b)); } catch (ProviderException e) { System.out.println("Exception thrown : " + e); } }}输出
Byte array before operation : [84, 97, 106, 109, 97, 104, 97, 108]Byte array after operation : [-14, 77, 123, 121, 116, 50, -89, -86]
