public void setModeName(String modeName) {
        this.modeName = modeName;
        //clear out the transformation string so the next invocation will rebuild it with the new mode:
        this.transformationString = null;
    }
Sets the cipher operation mode name to be used when constructing the
{@link javax.crypto.Cipher Cipher} transformation string.  A {@code null} value indicates that the JCA Provider
default mode for the specified {@link #getAlgorithmName() algorithm} should be used.
<p/>
This attribute is used <em>only</em> when constructing the transformation string for block (byte array)
operations ({@link #encrypt(byte[], byte[])} and {@link #decrypt(byte[], byte[])}).  The
{@link #getStreamingModeName() streamingModeName} attribute is used when the block cipher is used for
streaming operations.
<p/>
The default value is {@code null} to retain the JCA Provider default.
<p/>
<b>NOTE:</b> most standard mode names are represented by the {@link OperationMode OperationMode} enum.  That enum
should be used with the {@link #setMode mode} attribute when possible to retain type-safety and reduce the
possibility of errors.  This method is better used if the {@link OperationMode} enum does not represent the
necessary mode.

@param modeName the cipher operation mode name to be used when constructing
                {@link javax.crypto.Cipher Cipher} transformation string, or {@code null} if the JCA Provider
                default mode for the specified {@link #getAlgorithmName() algorithm} should be used.
@see #setMode
src/main/java/org/apache/shiro/crypto/cipher/DefaultBlockCipherService.java