java.lang.Object | +--java.util.Random | +--java.security.SecureRandom
Untamed:
SecureRandom()
SecureRandom(byte[] seed)
protected
SecureRandom(SecureRandomSpi secureRandomSpi,
Provider provider)
byte[]
generateSeed(int numBytes)
static SecureRandom
getInstance(String algorithm)
static SecureRandom
getInstance(String algorithm,
Provider provider)
static SecureRandom
getInstance(String algorithm,
String provider)
private static String
getPrngAlgorithm()
(package private) SecureRandomSpi
getSecureRandomSpi()
static byte[]
getSeed(int numBytes)
private static byte[]
longToByteArray(long l)
protected int
next(int numBits)
void
setSeed(long seed)
long seed
.
private Provider provider
private SecureRandomSpi secureRandomSpi
private static SecureRandom seedGenerator
static final long serialVersionUID
private byte[] state
private MessageDigest digest
private byte[] randomBytes
private int randomBytesUsed
private long counter
public SecureRandom()
By using this constructor, the caller obtains a SecureRandom object containing the implementation from the highest-priority installed provider that has a SecureRandom implementation.
Note that this instance of SecureRandom has not been seeded.
A call to the setSeed
method will seed the SecureRandom
object. If a call is not made to setSeed
, the first call
to the nextBytes
method will force the SecureRandom object
to seed itself.
This constructor is provided for backwards compatibility.
The caller is encouraged to use one of the alternative
getInstance
methods to obtain a SecureRandom object.
public SecureRandom(byte[] seed)
By using this constructor, the caller obtains a SecureRandom object containing the implementation from the highest-priority installed provider that has a SecureRandom implementation. This constructor uses a user-provided seed in preference to the self-seeding algorithm referred to in the empty constructor description. It may be preferable to the empty constructor if the caller has access to high-quality random bytes from some physical device (for example, a radiation detector or a noisy diode).
This constructor is provided for backwards compatibility.
The caller is encouraged to use one of the alternative
getInstance
methods to obtain a SecureRandom object, and
then to call the setSeed
method to seed it.
seed
- the seed.protected SecureRandom(SecureRandomSpi secureRandomSpi, Provider provider)
secureRandomSpi
- the SecureRandom implementation.provider
- the provider.public static SecureRandom getInstance(String algorithm) throws NoSuchAlgorithmException
Note that the returned instance of SecureRandom has not been seeded.
A call to the setSeed
method will seed the SecureRandom
object. If a call is not made to setSeed
, the first call
to the nextBytes
method will force the SecureRandom object
to seed itself.
algorithm
- the name of the PRNG algorithm.
See Appendix A in the
Java Cryptography Architecture API Specification & Reference
for information about standard PRNG algorithm names.
NoSuchAlgorithmException
public static SecureRandom getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
Note that the returned instance of SecureRandom has not been seeded.
A call to the setSeed
method will seed the SecureRandom
object. If a call is not made to setSeed
, the first call
to the nextBytes
method will force the SecureRandom object
to seed itself.
algorithm
- the name of the PRNG algorithm.
See Appendix A in the
Java Cryptography Architecture API Specification & Reference
for information about standard PRNG algorithm names.provider
- the name of the provider.
NoSuchAlgorithmException
NoSuchProviderException
Provider
public static SecureRandom getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
provider
doesn't have to be registered.
Note that the returned instance of SecureRandom has not been seeded.
A call to the setSeed
method will seed the SecureRandom
object. If a call is not made to setSeed
, the first call
to the nextBytes
method will force the SecureRandom object
to seed itself.
algorithm
- the name of the PRNG algorithm.
See Appendix A in the
Java Cryptography Architecture API Specification & Reference
for information about standard PRNG algorithm names.provider
- the provider.
NoSuchAlgorithmException
Provider
SecureRandomSpi getSecureRandomSpi()
public final Provider getProvider()
public void setSeed(byte[] seed)
seed
- the seed.getSeed(int)
public void setSeed(long seed)
long seed
. The given seed supplements,
rather than replaces, the existing seed. Thus, repeated calls
are guaranteed never to reduce randomness.
This method is defined for compatibility with
java.util.Random
.
seed
- the seed.getSeed(int)
public void nextBytes(byte[] bytes)
bytes
- the array to be filled in with random bytes.protected final int next(int numBits)
java.util.Random
method, and serves
to provide a source of random bits to all of the methods inherited
from that class (for example, nextInt
,
nextLong
, and nextFloat
).
numBits
- number of pseudo-random bits to be generated, where
0 <= numBits
<= 32. int
containing the user-specified number
of pseudo-random bits (right justified, with leading zeros).public static byte[] getSeed(int numBytes)
This method is only included for backwards compatibility.
The caller is encouraged to use one of the alternative
getInstance
methods to obtain a SecureRandom object, and
then call the generateSeed
method to obtain seed bytes
from that object.
numBytes
- the number of seed bytes to generate.
setSeed(byte[])
public byte[] generateSeed(int numBytes)
numBytes
- the number of seed bytes to generate.
private static byte[] longToByteArray(long l)
private static String getPrngAlgorithm()