public class SecureRandom extends Random
一个保密性强的随机数的最小符合统计学的随机数发生器测试指定的 FIPS 140-2, Security Requirements for Cryptographic Modules,第4.9.1。此外,提供的必须产生非确定性的输出。因此任何种子材料通过一个提供的对象必须是不可预知的,所有提供的输出序列必须加密型强,如 RFC 1750: Randomness Recommendations for Security。
来电者提供的实例获得通过的无参数构造函数或方法的一个getInstance
:
提供的随机=新securerandom();
许多提供的实现是一个伪随机数发生器的形式(PRNG),这意味着他们使用一个确定性的算法从一个真实的随机种子产生的伪随机序列。其他实现可能会产生真正的随机数,但其他人可能会使用这两种技术的组合。
对典型用户提供调用下面的方法检索随机字节:
提供的随机=新securerandom();字节[ ]新的字节[ 20 ];随机nextbytes(字节);
用户也可以调用generateSeed
方法生成一个给定的字节数(种子种子其他的随机数发生器,例如):
字节种子[] =随机generateseed(20);注:根据实施的
generateSeed
和
nextBytes
方法可以阻止熵正在聚集,例如,如果他们需要从/dev/random各种Unix操作系统读。
SecureRandomSpi
,
Random
,
Serialized Form
Modifier | Constructor and Description |
---|---|
|
SecureRandom()
构建一个安全的随机数发生器(RNG)执行默认的随机数算法。
|
|
SecureRandom(byte[] seed)
构建一个安全的随机数发生器(RNG)执行默认的随机数算法。
|
protected |
SecureRandom(SecureRandomSpi secureRandomSpi, Provider provider)
创建一个提供的对象。
|
Modifier and Type | Method and Description |
---|---|
byte[] |
generateSeed(int numBytes)
返回给定数量的种子字节,使用该类用于种子本身的种子生成算法计算。
|
String |
getAlgorithm()
返回该提供的对象实现算法的名字。
|
static SecureRandom |
getInstance(String algorithm)
返回一个实现指定随机数发生器(RNG)算法提供的对象。
|
static SecureRandom |
getInstance(String algorithm, Provider provider)
返回一个实现指定随机数发生器(RNG)算法提供的对象。
|
static SecureRandom |
getInstance(String algorithm, String provider)
返回一个实现指定随机数发生器(RNG)算法提供的对象。
|
static SecureRandom |
getInstanceStrong()
|
Provider |
getProvider()
返回该对象的供应商提供的。
|
static byte[] |
getSeed(int numBytes)
返回给定数量的种子字节,使用该类用于种子本身的种子生成算法计算。
|
protected int |
next(int numBits)
生成一个包含用户指定数量的伪随机数(右对齐,与前导零)的整数。
|
void |
nextBytes(byte[] bytes)
生成指定数量的随机字节数。
|
void |
setSeed(byte[] seed)
重播这随机对象。
|
void |
setSeed(long seed)
重播这随机对象,使用八个字节包含在给定的
long seed 。
|
public SecureRandom()
此构造函数通过注册安全提供商列表,从最开始的首选供应商。新提供的对象封装securerandomspi实现从支持提供的第一供应商(RNG)算法返回。如果供应商不支持随机算法,然后实现特定的默认返回。
注意,注册商的列表可以通过Security.getProviders()
检索方法。
看到有关标准RNG算法名称信息在 Java Cryptography Architecture Standard Algorithm Name Documentation SecureRandom节。
返回的提供对象尚未播种。种子返回的对象,调用setSeed
方法。如果setSeed
不叫,要nextBytes
第一次调用将迫使提供种子本身的对象。这种自我播种时不会发生setSeed
以前被称为。
public SecureRandom(byte[] seed)
此构造函数通过注册安全提供商列表,从最开始的首选供应商。新提供的对象封装securerandomspi实现从支持提供的第一供应商(RNG)算法返回。如果供应商不支持随机算法,然后实现特定的默认返回。
注意,注册商的列表可以通过Security.getProviders()
检索方法。
看到有关标准RNG算法名称信息在 Java Cryptography Architecture Standard Algorithm Name Documentation SecureRandom节。
seed
的种子。
protected SecureRandom(SecureRandomSpi secureRandomSpi, Provider provider)
secureRandomSpi
- SecureRandom实现。
provider
-供应商。
public static SecureRandom getInstance(String algorithm) throws NoSuchAlgorithmException
该方法通过注册安全提供商列表,从最开始的首选供应商。新提供的对象封装securerandomspi实施支持指定算法的第一供应商返回。
注意,注册商的列表可以通过Security.getProviders()
检索方法。
返回的提供对象尚未播种。种子返回的对象,调用setSeed
方法。如果setSeed
不叫,要nextBytes
第一次调用将迫使提供种子本身的对象。这种自我播种时不会发生setSeed
以前被称为。
algorithm
- RNG算法的名称。看到有关标准RNG算法名称信息在
Java Cryptography Architecture Standard Algorithm Name Documentation SecureRandom节。
NoSuchAlgorithmException
-如果没有提供程序支持一个指定的算法securerandomspi实施。
Provider
public static SecureRandom getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
新提供的对象封装securerandomspi实现从指定的提供程序返回。指定的提供程序必须在安全提供程序列表中注册。
注意,注册商的列表可以通过Security.getProviders()
检索方法。
返回的提供对象尚未播种。种子返回的对象,调用setSeed
方法。如果setSeed
不叫,要nextBytes
第一次调用将迫使提供种子本身的对象。这种自我播种时不会发生setSeed
以前被称为。
algorithm
- RNG算法的名称。看到有关标准RNG算法名称信息在
Java Cryptography Architecture Standard Algorithm Name Documentation SecureRandom节。
provider
-提供者的名称。
NoSuchAlgorithmException
-如果一个指定的算法securerandomspi执行不可从指定的供应商。
NoSuchProviderException
-如果指定的供应商不在安全提供商注册名单。
IllegalArgumentException
如果提供者名称为空或空。
Provider
public static SecureRandom getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
新提供的对象封装securerandomspi实现从指定的提供程序对象返回。请注意,指定的提供程序对象不必在提供者列表中注册。
返回的提供对象尚未播种。种子返回的对象,调用setSeed
方法。如果setSeed
不叫,要nextBytes
第一次调用将迫使提供种子本身的对象。这种自我播种时不会发生setSeed
以前被称为。
algorithm
- RNG算法的名称。看到有关标准RNG算法名称信息在
Java Cryptography Architecture Standard Algorithm Name Documentation SecureRandom节。
provider
-供应商。
NoSuchAlgorithmException
-如果一个指定的算法securerandomspi执行不可从指定的提供程序对象。
IllegalArgumentException
-如果指定的提供程序是无效的。
Provider
public final Provider getProvider()
public String getAlgorithm()
unknown
名称如果算法名称无法确定。
public void setSeed(byte[] seed)
seed
的种子。
getSeed(int)
public void setSeed(long seed)
long seed
。给定的种子补充,而不是替换,现有的种子。因此,重复的通话保证不会减少随机性。
这种方法是为了兼容java.util.Random
定义。
setSeed
方法重写,继承类
Random
seed
的种子。
getSeed(int)
public void nextBytes(byte[] bytes)
如果一个电话setSeed
未发生之前,对这种方法的第一次调用军队这种子本身提供的对象。这种自我播种时不会发生setSeed
以前被称为。
protected final int next(int numBits)
java.util.Random
方法重写方法,并提供所有从该类继承的方法提供了一个随机比特的源(例如,
nextInt
,
nextLong
,和
nextFloat
)。
public static byte[] getSeed(int numBytes)
此方法只包括向后兼容性。打电话的是鼓励使用的一个替代getInstance
方法获得提供的对象,然后调用generateSeed
方法从对象获得种子字节。
numBytes
-种子的字节数产生。
setSeed(byte[])
public byte[] generateSeed(int numBytes)
numBytes
-种子的字节数产生。
public static SecureRandom getInstanceStrong() throws NoSuchAlgorithmException
SecureRandom
利用算法/供应商在
securerandom.strongAlgorithms
Security
属性指定的选择。
有些情况需要强随机值,如创造高价值/长寿的秘密像RSA公钥/私钥时。帮助指导应用选择合适的强SecureRandom
实现,java分布包括一些已知的强SecureRandom
实现在securerandom.strongAlgorithms
安全性能。
java平台的每种实现都要求支持至少一个强大的SecureRandom
实施。
SecureRandom
实施的安全性表示
securerandom.strongAlgorithms
NoSuchAlgorithmException
-如果没有算法的有效性
Security.getProperty(String)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.