Package org.apache.shiro.crypto
Class SecureRandomNumberGenerator
- java.lang.Object
-
- org.apache.shiro.crypto.SecureRandomNumberGenerator
-
- All Implemented Interfaces:
RandomNumberGenerator
public class SecureRandomNumberGenerator extends Object implements RandomNumberGenerator
Default implementation of theRandomNumberGenerator
interface, backed by aSecureRandom
instance. This class is a little easier to use than using the JDK'sSecureRandom
class directly. It also allows for JavaBeans-style of customization, convenient for Shiro's INI configuration or other IoC configuration mechanism.- Since:
- 1.1
-
-
Field Summary
Fields Modifier and Type Field Description protected static int
DEFAULT_NEXT_BYTES_SIZE
-
Constructor Summary
Constructors Constructor Description SecureRandomNumberGenerator()
Creates a new instance with a default backingSecureRandom
and adefaultNextBytesSize
of16
, which equals 128 bits, a size commonly used in cryptographic algorithms.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getDefaultNextBytesSize()
Returns the size of the generated byte array for calls tonextBytes()
.SecureRandom
getSecureRandom()
Returns theSecureRandom
backing this instance.ByteSource
nextBytes()
Generates a byte array of fixed length filled with random data, often useful for generating salts, initialization vectors or other seed data.ByteSource
nextBytes(int numBytes)
Generates a byte array of the specified length filled with random data.void
setDefaultNextBytesSize(int defaultNextBytesSize)
Sets the size of the generated byte array for calls tonextBytes()
.void
setSecureRandom(SecureRandom random)
Sets theSecureRandom
to back this instance.void
setSeed(byte[] bytes)
Seeds the backingSecureRandom
instance with additional seed data.
-
-
-
Field Detail
-
DEFAULT_NEXT_BYTES_SIZE
protected static final int DEFAULT_NEXT_BYTES_SIZE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
SecureRandomNumberGenerator
public SecureRandomNumberGenerator()
Creates a new instance with a default backingSecureRandom
and adefaultNextBytesSize
of16
, which equals 128 bits, a size commonly used in cryptographic algorithms.
-
-
Method Detail
-
setSeed
public void setSeed(byte[] bytes)
Seeds the backingSecureRandom
instance with additional seed data.- Parameters:
bytes
- the seed bytes- See Also:
SecureRandom.setSeed(byte[])
-
getSecureRandom
public SecureRandom getSecureRandom()
Returns theSecureRandom
backing this instance.- Returns:
- the
SecureRandom
backing this instance.
-
setSecureRandom
public void setSecureRandom(SecureRandom random) throws NullPointerException
Sets theSecureRandom
to back this instance.- Parameters:
random
- theSecureRandom
to back this instance.- Throws:
NullPointerException
- if the method argument is null
-
getDefaultNextBytesSize
public int getDefaultNextBytesSize()
Returns the size of the generated byte array for calls tonextBytes()
. Defaults to16
, which equals 128 bits, a size commonly used in cryptographic algorithms.- Returns:
- the size of the generated byte array for calls to
nextBytes()
.
-
setDefaultNextBytesSize
public void setDefaultNextBytesSize(int defaultNextBytesSize) throws IllegalArgumentException
Sets the size of the generated byte array for calls tonextBytes()
. Defaults to16
, which equals 128 bits, a size commonly used in cryptographic algorithms.- Parameters:
defaultNextBytesSize
- the size of the generated byte array for calls tonextBytes()
.- Throws:
IllegalArgumentException
- if the argument is 0 or negative
-
nextBytes
public ByteSource nextBytes()
Description copied from interface:RandomNumberGenerator
Generates a byte array of fixed length filled with random data, often useful for generating salts, initialization vectors or other seed data. The length is specified as a configuration value on the underlying implementation. If you'd like per-invocation control the number of bytes generated, use thenextBytes(int)
method instead.- Specified by:
nextBytes
in interfaceRandomNumberGenerator
- Returns:
- a byte array of fixed length filled with random data.
- See Also:
RandomNumberGenerator.nextBytes(int)
-
nextBytes
public ByteSource nextBytes(int numBytes)
Description copied from interface:RandomNumberGenerator
Generates a byte array of the specified length filled with random data.- Specified by:
nextBytes
in interfaceRandomNumberGenerator
- Parameters:
numBytes
- the number of bytes to be populated with random data.- Returns:
- a byte array of the specified length filled with random data.
- See Also:
RandomNumberGenerator.nextBytes()
-
-