Java SecureRandom setSeed()方法及示例

来源:这里教程网 时间:2026-02-17 21:08:38 作者:

Java SecureRandom setSeed()方法及示例

setSeed( byte[] seed )

java.security.SecureRandom 类的 setSeed() 方法被用来重新填充这个随机对象。给定的种子是对现有种子的补充,而不是替换。因此,重复调用可以保证永远不会减少随机性。

语法

public void setSeed(byte[] seed)

参数: 该方法将种子作为参数。

注意: 每次Secure Random类都会产生随机输出:

下面是说明setSeed()方法的例子。

例子1 :

// Java program to demonstrate// setSeed() 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 b            byte[] b = str.getBytes();              // Reseeding the random object            sr.setSeed(b);              // getting the seeds            byte[] seeds = sr.getSeed(10);              // printing the seed serialwise            for (int i = 0; i < seeds.length; i++)                System.out.println("Seed[" + i + "] : " + seeds[i]);        }          catch (NoSuchAlgorithmException e) {              System.out.println("Exception thrown : " + e);        }          catch (ProviderException e) {              System.out.println("Exception thrown : " + e);        }    }}

输出

Seed[0]:69Seed[0] : 23Seed[1] : -99Seed[2] : -51Seed[3] : 107Seed[4] : 41Seed[5] : -96Seed[6] : -93Seed[7] : -86Seed[8] : 127Seed[9] : 47

例2 :

// Java program to demonstrate// setSeed() 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();              // Reseeding the random object            sr.setSeed(b);              // getting the seeds            byte[] seeds = sr.getSeed(10);              // printing the seed serialwise            for (int i = 0; i < seeds.length; i++)                System.out.println("Seed[" + i + "]:" + seeds[i]);        }          catch (ProviderException e) {              System.out.println("Exception thrown : " + e);        }    }}

输出

Seed[0]:92Seed[1]:127Seed[2]:28Seed[3]:-127Seed[4]:-100Seed[5]:-110Seed[6]:86Seed[7]:-55Seed[8]:48Seed[9]:-78

setSeed(long seed )

java.security.SecureRandom 类的 setSeed(long seed) 方法被用来重新填充这个随机对象,使用给定的long seed中包含的八个字节。给定的种子是对现有种子的补充,而不是替换。因此,重复调用可以保证永远不会减少随机性。

语法

public void setSeed( long seed )

参数: 该方法将 种子 作为参数。

注意: 每次Secure Random类都会产生随机输出:

下面是说明setSeed()方法的例子。

例子1 :

// Java program to demonstrate// setSeed() method  import java.security.*;import java.util.*;  public class GFG1 {    public static void main(String[] argv) throws Exception    {        try {            // creating the object of SecureRandom            SecureRandom sr = SecureRandom.getInstance("SHA1PRNG", "SUN");              // Reseeding the random object            sr.setSeed(101L);              // getting the seeds            byte[] seeds = sr.getSeed(10);              // printing the seed serialwise            for (int i = 0; i < seeds.length; i++)                System.out.println("Seed[" + i + "] : " + seeds[i]);        }          catch (NoSuchAlgorithmException e) {              System.out.println("Exception thrown : " + e);        }          catch (ProviderException e) {              System.out.println("Exception thrown : " + e);        }    }}

输出

Seed[0] : -36Seed[1] : -65Seed[2] : -94Seed[3] : 16Seed[4] : -104

例2 :

// Java program to demonstrate// setSeed() 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 });              // Reseeding the random object            sr.setSeed(101L);              // getting the seeds            byte[] seeds = sr.getSeed(10);              // printing the seed serialwise            for (int i = 0; i < seeds.length; i++)                System.out.println("Seed[" + i + "]:" + seeds[i]);        }          catch (ProviderException e) {              System.out.println("Exception thrown : " + e);        }    }}

输出

Seed[0]:-29Seed[1]:-93Seed[2]:6Seed[3]:66Seed[4]:126Seed[5]:93Seed[6]:-58Seed[7]:-91Seed[8]:-62Seed[9]:-58

相关推荐