private javax.crypto.Cipher newCipherInstance(boolean streaming) throws CryptoException {
        String transformationString = getTransformationString(streaming);
        try {
            return javax.crypto.Cipher.getInstance(transformationString);
        } catch (Exception e) {
            String msg = "Unable to acquire a Java JCA Cipher instance using " +
                    javax.crypto.Cipher.class.getName() + ".getInstance( \"" + transformationString + "\" ). " +
                    getAlgorithmName() + " under this configuration is required for the " +
                    getClass().getName() + " instance to function.";
            throw new CryptoException(msg, e);
        }
    }
Returns a new {@link javax.crypto.Cipher Cipher} instance to use for encryption/decryption operations.  The
Cipher's {@code transformationString} for the {@code Cipher}.{@link javax.crypto.Cipher#getInstance getInstance}
call is obtained via the {@link #getTransformationString(boolean) getTransformationString} method.

@param streaming {@code true} if the cipher instance will be used as a stream cipher, {@code false} if it will be
                 used as a block cipher.
@return a new JDK {@code Cipher} instance.
@throws CryptoException if a new Cipher instance cannot be constructed based on the
                        {@link #getTransformationString(boolean) getTransformationString} value.
src/main/java/org/apache/shiro/crypto/cipher/JcaCipherService.java