code: public static final SecretKeyFactory getInstance(String algorithm,
              String provider) throws NoSuchAlgorithmException,
              NoSuchProviderException {
          Instance instance = JceSecurity.getInstance("SecretKeyFactory",
                  SecretKeyFactorySpi.class, algorithm, provider);
          return new SecretKeyFactory((SecretKeyFactorySpi)instance.impl,
                  instance.provider, algorithm);
      }
docs: Returns a <code>SecretKeyFactory</code> object that converts
  secret keys of the specified algorithm.
  
  <p> A new SecretKeyFactory object encapsulating the
  SecretKeyFactorySpi implementation from the specified provider
  is returned.  The specified provider must be registered
  in the security provider list.
  
  <p> Note that the list of registered providers may be retrieved via
  the {@link Security#getProviders() Security.getProviders()} method.
  
  @param algorithm the standard name of the requested secret-key
  algorithm.
  See the SecretKeyFactory section in the <a href=
  "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#SecretKeyFactory">
  Java Cryptography Architecture Standard Algorithm Name Documentation</a>
  for information about standard algorithm names.
  
  @param provider the name of the provider.
  
  @return the new <code>SecretKeyFactory</code> object.
  
  @exception NoSuchAlgorithmException if a SecretKeyFactorySpi
  implementation for the specified algorithm is not
  available from the specified provider.
  
  @exception NullPointerException if the specified algorithm
  is null.
  
  @throws NoSuchProviderException if the specified provider is not
  registered in the security provider list.
  
  @exception IllegalArgumentException if the <code>provider</code>
  is null or empty.
  
  @see java.security.Provider