|    | KeyGenerator | javax.crypto |  
  This class provides an API for generating secret keys for symmetric cryptography. It is similar to  java.security.KeyPairGenerator  , which generates public/private key pairs for asymmetric or public-key cryptography.  KeyGenerator  is algorithm-independent and provider-based, so you must obtain a  KeyGenerator  instance by calling one of the static  getInstance( )  factory methods and specifying the name of the cryptographic algorithm for which a key is desired and, optionally , the name of the security provider whose key-generation implementation is to be used. In Java 5.0 the "SunJCE" provider includes  KeyGenerator  implementations algorithms with the following names :          |  AES  |  DESede  
 |  HmacSHA384  |   |  ARCFOUR  |  HmacMD5  
 |  HmacSHA512  |   |  Blowfish  |  HmacSHA1  
 |  RC2  |   |  DES  |  HmacSHA256  
 |  |  
  Once you have obtained a  KeyGenerator  , you initialize it with the  init( )  method. You can provide a  java.security.spec.AlgorithmParameterSpec  object to provide algorithm-specific initialization parameters or simply specify the desired size (in bits) of the key to be generated. In either case, you can also specify a source of randomness in the form of a  SecureRandom  object. If you do not specify a  SecureRandom  , the  KeyGenerator  instantiates one of its own. None of the algorithms supported by the "SunJCE" provider require algorithm-specific parameters.   After calling  getInstance( )  to obtain a  KeyGenerator  and  init( )  to initialize it, simply call  generateKey( )  to create a new  SecretKey  . Remember that the  SecretKey  must be kept secret. Take precautions when storing or transmitting the key, so that it does not fall into the wrong hands. You may want to use a  java.security.KeyStore  object to store the key in a password-protected form.   public class  KeyGenerator  {  // Protected Constructors  protected  KeyGenerator  (KeyGeneratorSpi  keyGenSpi  , java.security.Provider  provider  ,          String  algorithm  );  // Public Class Methods  public static final KeyGenerator  getInstance  (String  algorithm  )          throws java.security.NoSuchAlgorithmException;        public static final KeyGenerator  getInstance  (String  algorithm  ,          java.security.Provider  provider  ) throws java.security.NoSuchAlgorithmException;        public static final KeyGenerator  getInstance  (String  algorithm  ,          String  provider  ) throws java.security.NoSuchAlgorithmException,          java.security.NoSuchProviderException;  // Public Instance Methods  public final SecretKey  generateKey  ( );        public final String  getAlgorithm  ( );        public final java.security.Provider  getProvider  ( );        public final void  init  (int  keysize  );        public final void  init  (java.security.spec.AlgorithmParameterSpec  params  )          throws java.security.InvalidAlgorithmParameterException;        public final void  init  (java.security.SecureRandom  random  );        public final void  init  (int  keysize  , java.security.SecureRandom  random  );        public final void  init  (java.security.spec.AlgorithmParameterSpec  params  ,          java.security.SecureRandom  random  )          throws java.security.InvalidAlgorithmParameterException;   } 
 |