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
