Java SecureRandom nextBytes()方法及示例

Java SecureRandom nextBytes()方法及示例

java.security.SecureRandom 类的 nextBytes() 方法是用来生成用户指定数量的随机字节的。

如果之前没有调用setSeed,对这个方法的第一次调用会迫使这个SecureRandom对象进行自我播种。如果之前调用了setSeed,这种自我播种就不会发生。

语法

public void nextBytes(byte[] bytes)

参数: 该方法以待填入随机字节的数组为参数。

注意

  1. 这些程序将不会在在线IDE上运行。
  2. 每次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]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程