This class provides the functionality of a secret (symmetric) key generator.
Key generators are constructed using one of the getInstance
class methods of this class.
KeyGenerator objects are reusable, i.e., after a key has been generated, the same KeyGenerator object can be re-used to generate further keys.
There are two ways to generate a key: in an algorithm-independent manner, and in an algorithm-specific manner. The only difference between the two is the initialization of the object:
All key generators share the concepts of a keysize and a
source of randomness.
There is an
init
method in this KeyGenerator class that takes these two universally
shared types of arguments. There is also one that takes just a
keysize
argument, and uses the SecureRandom implementation
of the highest-priority installed provider as the source of randomness
(or a system-provided source of randomness if none of the installed
providers supply a SecureRandom implementation), and one that takes just a
source of randomness.
Since no other parameters are specified when you call the above
algorithm-independent init
methods, it is up to the
provider what to do about the algorithm-specific parameters (if any) to be
associated with each of the keys.
For situations where a set of algorithm-specific parameters already
exists, there are two
init
methods that have an AlgorithmParameterSpec
argument. One also has a SecureRandom
argument, while the
other uses the SecureRandom implementation
of the highest-priority installed provider as the source of randomness
(or a system-provided source of randomness if none of the installed
providers supply a SecureRandom implementation).
In case the client does not explicitly initialize the KeyGenerator
(via a call to an init
method), each provider must
supply (and document) a default initialization.
Every implementation of the Java platform is required to support the
following standard KeyGenerator
algorithms with the keysizes in
parentheses:
SecretKey