类 java.security.SecureRandom
java.lang.Object
|
+----java.util.Random
|
+----java.security.SecureRandom
- public class SecureRandom
- extends Random
该类提供了一个基于 SHA-1 散列算法的加密性强的伪随机数生成器。
从 Random 继承的调用的实现加强了原有的功能。
- 参见:
- Random
构造子索引
- SecureRandom()
- 这个空的构造子自动种植 (seeds) 生成程器。
- SecureRandom(byte[])
- 这个构造子使用用户提供的种子 (seed),该种子优先于空构造子描述中引用的自种植算法。
方法索引
- getSeed(int)
- 返回给定的种子字节的数目,它是用种子生成算法计算的,该类用该算法进行自我种植。
- next(int)
- 生成一个整数,它包含用户指定的位数的伪随机数 ( 右端以零为先导 )。
- nextBytes(byte[])
- 生成一个用户指定位数的随机字节。
- setSeed(byte[])
- 重新种植该随机对象。
- setSeed(long)
- 使用包含在给定
long seed 中的八个字节重新种植该随机对象。
构造子
SecureRandom
public SecureRandom()
- 这个空的构造子自动产生生成器。试图提供足够的种子字节使生成器的内部状态 ( 20 字节 ) 完全随机化。但是注意种子生成算法不能完全被研究或被广泛试用。它依赖于调用线程在等待另一个线程时睡眠指定长的时间的次数。
在给定的虚拟机中,第一次调用该构造子时,它可能用几秒的 CPU 时间种植一个生成器,这取决于基础的硬件。后续的调用运行会快得多,因为它们依赖于同一个 ( 内部的 ) 产生种子位的伪随机数生成器。
由该构造子实现的种植过程保证由每个 SecureRandom 实例产生的伪随机数字节序列不会产生关于其它实例生成的任何字节序列的有用信息。但是如果用户希望用真正不相关的种子产生多个实例,下面的代码可以产生期望的结果
( 为每个实例付出实质的 CPU 代价 !):
SecureRandom rnd = new SecureRandom(SecureRandom.getSeed(20));
SecureRandom
public SecureRandom(byte seed[])
- 这个构造子使用用户提供的种子,它优先于空构造子描述引用的自种植算法。如果调用者有权利从某些物理设备 ( 如,一个辐射检波器或一个噪声二极管 ) 获得高质量的随机字节,它可能优先于空构造子。
- 参数:
- seed - 种子。
方法
setSeed
public synchronized void setSeed(byte seed[])
- 重新种植该随机对象。 给定的种子补充,而不是替换现存的种子。这样,保证重复的调用决不会减少随机性。
- 参数:
- seed - 种子。
setSeed
public void setSeed(long seed)
- 使用包含在给定
long seed 中的八个字节重新种植该随机对象。
给定的种子补充,而不是替换现存的种子。 这样,保证重复的调用决不会减少随机性。
定义该方法是为与 java.util.Random 兼容。
- 参数:
- seed - 种子。
- 覆盖:
- 类 Random 中的 setSeed
nextBytes
public synchronized void nextBytes(byte bytes[])
- 生成一个用户指定位数的随机字节。这个方法用作所有由该类返回的随机实体 ( 除种子字节 ) 的基础。所以,它可以被覆盖以改变该类的行为。
- 参数:
- bytes - 用随机字节填充的数组。
- 覆盖:
- 类 Random 中的 nextBytes
next
protected final int next(int numBits)
- 生成一个整数,它包含用户指定位数的伪随机比特 ( 右对齐,以零打头 )。该方法覆盖了一个
java.util.Random 方法,并提供下面的服务,为所有从该类继承的方法提供随机比特源 (例如,
nextInt、nextLong 和 nextFloat)。
- 参数:
- numBits - 要产生的伪随机数的位数,这里 0 <=
numBits <= 32。 - 覆盖:
- 类 Random 中的 next
getSeed
public static byte[] getSeed(int numBytes)
- 返回给定的种子字节的数目,它是用种子生成算法计算的,该类用该算法进行自我种植。该方法将用于种植其它随机数生成器。试图返回一个“真正随机”的字节序列,但是不知道由该调用返回的字节确切的随机程度。
( 关于这个基本算法的简单说明,请参见空构造子
SecureRandom。) 谨慎的用户因为过于小心而犯错误,获得附加的种子字节,尽管我们注意到生成种子的代价是很高的。
- 参数:
- numBytes - 要生成的种子字节数。
- 返回值:
- 种子字节数。