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:
- Algorithm-Independent Initialization
All key generators share the concepts of a keysize and a source of randomness. There is an
init
method in thisKeyGenerator
class that takes these two universally shared types of arguments. There is also one that takes just akeysize
argument, and uses theSecureRandom
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. - Algorithm-Specific Initialization
For situations where a set of algorithm-specific parameters already exists, there are two
init
methods that have anAlgorithmParameterSpec
argument. One also has aSecureRandom
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. See the Keysize Restriction sections of the Moved out of a link with destination https://docs.oracle.com/pls/topic/lookup?ctx=javase20&id=security_guide_jdk_providers.Moved to a link with destination https://docs.oracle.com/pls/topic/lookup?ctx=javase21&id=security_guide_jdk_providers.JDK ProvidersMoved out of a link with destination https://docs.oracle.com/pls/topic/lookup?ctx=javase20&id=security_guide_jdk_providers.Moved to a link with destination https://docs.oracle.com/pls/topic/lookup?ctx=javase21&id=security_guide_jdk_providers. document for information on the KeyGenerator
defaults used by JDK providers. However, note that defaults may vary across different providers. Additionally, the default value for a provider may change in a future version. Therefore, it is recommended to explicitly initialize the KeyGenerator
instead of relying on provider-specific defaults.
Every implementation of the Java platform is required to support the following standard KeyGenerator
algorithms with the keysizes in parentheses:
AES
(128)DESede
(168)HmacSHA1
HmacSHA256
- Since:
- 1.4
- See Also:
Constructors
- ✓protected KeyGenerator(javax.crypto.KeyGeneratorSpi arg0, java.security.Provider arg1, java.lang.String arg2)
Methods
- ✓public final javax.crypto.SecretKey generateKey()
- ✓public final java.lang.String getAlgorithm()
- ✓public static final javax.crypto.KeyGenerator getInstance(java.lang.String arg0) throws java.security.NoSuchAlgorithmException
- ✓public static final javax.crypto.KeyGenerator getInstance(java.lang.String arg0, java.lang.String arg1) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException
- ✓public static final javax.crypto.KeyGenerator getInstance(java.lang.String arg0, java.security.Provider arg1) throws java.security.NoSuchAlgorithmException
- ✓public final java.security.Provider getProvider()
- ✓public final void init(int arg0)
- ✓public final void init(int arg0, java.security.SecureRandom arg1)
- ✓public final void init(java.security.SecureRandom arg0)
- ✓public final void init(java.security.spec.AlgorithmParameterSpec arg0) throws java.security.InvalidAlgorithmParameterException
- ✓public final void init(java.security.spec.AlgorithmParameterSpec arg0, java.security.SecureRandom arg1) throws java.security.InvalidAlgorithmParameterException
Summary
Elements | Comments | Descriptions | Total | |||||||
---|---|---|---|---|---|---|---|---|---|---|
Added | Changed | Removed | Added | Changed | Removed | Added | Changed | Removed | ||
KeyGenerator | 2 | 2 | ||||||||
Total | 2 | 2 |