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]