code: public static final Cipher getInstance(String transformation,
                                             Provider provider)
              throws NoSuchAlgorithmException, NoSuchPaddingException
      {
          if (provider == null) {
              throw new IllegalArgumentException("Missing provider");
          }
          return createCipher(transformation, provider);
      }
docs: Returns a <code>Cipher</code> object that implements the specified
  transformation.
  
  <p> A new Cipher object encapsulating the
  CipherSpi implementation from the specified Provider
  object is returned.  Note that the specified Provider object
  does not have to be registered in the provider list.
  
  @param transformation the name of the transformation,
  e.g., <i>DES/CBC/PKCS5Padding</i>.
  See the Cipher section in the <a href=
  "{@docRoot}openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#Cipher">
  Java Cryptography Architecture Standard Algorithm Name Documentation</a>
  for information about standard transformation names.
  
  @param provider the provider.
  
  @return a cipher that implements the requested transformation.
  
  @exception NoSuchAlgorithmException if <code>transformation</code>
  is null, empty, in an invalid format,
  or if a CipherSpi implementation for the specified algorithm
  is not available from the specified Provider object.
  
  @exception NoSuchPaddingException if <code>transformation</code>
  contains a padding scheme that is not available.
  
  @exception IllegalArgumentException if the <code>provider</code>
  is null.
  
  @see java.security.Provider