@Override
    protected AlgorithmParameterSpec createParameterSpec(byte[] iv, boolean streaming) {

        if ((streaming && OperationMode.GCM.name().equals(getStreamingModeName()))
        || (!streaming && OperationMode.GCM.name().equals(getModeName()))) {
            return new GCMParameterSpec(getKeySize(), iv);
        }

        return super.createParameterSpec(iv, streaming);
    }
Creates a new {@link CipherService} instance using the {@code AES} cipher algorithm with the following
important cipher default attributes:
<table>
<tr>
<th>Attribute</th>
<th>Value</th>
</tr>
<tr>
<td>{@link #setKeySize keySize}</td>
<td>{@code 128} bits</td>
</tr>
<tr>
<td>{@link #setBlockSize blockSize}</td>
<td>{@code 128} bits (required for {@code AES}</td>
</tr>
<tr>
<td>{@link #setMode mode}</td>
<td>{@link OperationMode#GCM GCM}<b>*</b></td>
</tr>
<tr>
<td>{@link #setPaddingScheme paddingScheme}</td>
<td>{@link PaddingScheme#NONE NoPadding}***</td>
</tr>
<tr>
<td>{@link #setInitializationVectorSize(int) initializationVectorSize}</td>
<td>{@code 128} bits</td>
</tr>
<tr>
<td>{@link #setGenerateInitializationVectors(boolean) generateInitializationVectors}</td>
<td>{@code true}<b>**</b></td>
</tr>
</table>
<p/>
<b>*</b> The {@link OperationMode#GCM GCM} operation mode is used instead of the JDK default {@code ECB} to
ensure strong encryption.  {@code ECB} should not be used in security-sensitive environments - see the
{@link DefaultBlockCipherService DefaultBlockCipherService} class JavaDoc's &quot;Operation Mode&quot; section
for more.
<p/>
<b>**</b>In conjunction with the default {@code GCM} operation mode, initialization vectors are generated by
default to ensure strong encryption.  See the {@link JcaCipherService JcaCipherService} class JavaDoc for more.
<p/>
<b>**</b>Since {@code GCM} is a stream cipher, padding is implemented in the operation mode and an external padding scheme
cannot be used in conjunction with {@code GCM}. In fact, {@code AES/GCM/PKCS5Padding} is just an alias in most JVM for
{@code AES/GCM/NoPadding}.
<p/>
<b>NOTE:</b> As of Java 14, setting a streaming padding for the above example will throw a NoSuchAlgorithmException
@see <a href="https://www.oracle.com/java/technologies/javase/14-relnote-issues.html#JDK-8180392">JDK-8180392</a>
src/main/java/org/apache/shiro/crypto/cipher/AesCipherService.java