code: protected C newCipher(final K key)
  		throws NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException,
  		InvalidKeyException, InvalidAlgorithmParameterException, UnsupportedEncodingException
  	{
  		return newCipher(key, newAlgorithm(), newSalt(), newIterationCount(), newOperationMode());
  	}
docs: Factory method for creating a new {@link Cipher} from the given private key. This method is
  invoked in the constructor from the derived classes and can be overridden so users can
  provide their own version of a new {@link Cipher} from the given private key.
  
  @param key
  the key
  @return the new {@link Cipher} from the given private key.
  @throws NoSuchAlgorithmException
  is thrown if instantiation of the SecretKeyFactory object fails.
  @throws InvalidKeySpecException
  is thrown if generation of the SecretKey object fails.
  @throws NoSuchPaddingException
  is thrown if instantiation of the cypher object fails.
  @throws InvalidKeyException
  is thrown if initialization of the cypher object fails.
  @throws InvalidAlgorithmParameterException
  is thrown if initialization of the cypher object fails.
  @throws UnsupportedEncodingException
  is thrown if the named charset is not supported.