当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java SecureRandom setSeed()用法及代码示例


setSeed(byte [] seed)

java.security.SecureRandom类的setSeed()方法用于重新设置此随机对象的种子。给定的种子补充而不是替换现有种子。因此,保证重复调用永远不会降低随机性。

用法:

public void setSeed(byte[] seed)

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


Note:每次“安全随机”类将生成随机输出

下面是说明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]:69
Seed[0]:23
Seed[1]:-99
Seed[2]:-51
Seed[3]:107
Seed[4]:41
Seed[5]:-96
Seed[6]:-93
Seed[7]:-86
Seed[8]:127
Seed[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]:92
Seed[1]:127
Seed[2]:28
Seed[3]:-127
Seed[4]:-100
Seed[5]:-110
Seed[6]:86
Seed[7]:-55
Seed[8]:48
Seed[9]:-78

setSeed(长种子)

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

用法:


public void setSeed( long seed )

参数:该方法以种子为参数

Note:每次“安全随机”类将生成随机输出

下面是说明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]:-36
Seed[1]:-65
Seed[2]:-94
Seed[3]:16
Seed[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]:-29
Seed[1]:-93
Seed[2]:6
Seed[3]:66
Seed[4]:126
Seed[5]:93
Seed[6]:-58
Seed[7]:-91
Seed[8]:-62
Seed[9]:-58


相关用法


注:本文由纯净天空筛选整理自RohitPrasad3大神的英文原创作品 SecureRandom setSeed() method in Java with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。