You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2020/04/10 21:36:28 UTC

[commons-crypto] 01/06: Use final.

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-crypto.git

commit 9067ae9e554605821b84b343cceabd1b7840b7d3
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Fri Apr 10 15:34:56 2020 -0400

    Use final.
---
 .../java/org/apache/commons/crypto/Crypto.java     |  12 +-
 .../apache/commons/crypto/NativeCodeLoader.java    |  38 +--
 .../java/org/apache/commons/crypto/OsInfo.java     |  20 +-
 .../apache/commons/crypto/cipher/CryptoCipher.java |   4 +-
 .../commons/crypto/cipher/CryptoCipherFactory.java |  18 +-
 .../apache/commons/crypto/cipher/JceCipher.java    |  20 +-
 .../org/apache/commons/crypto/cipher/OpenSsl.java  |  48 ++--
 .../commons/crypto/cipher/OpenSslCipher.java       |  26 +-
 .../commons/crypto/cipher/OpenSslCommonMode.java   |  16 +-
 .../crypto/cipher/OpenSslEvpCtrlValues.java        |   2 +-
 .../crypto/cipher/OpenSslFeedbackCipher.java       |   2 +-
 .../crypto/cipher/OpenSslGaloisCounterMode.java    |  34 +--
 .../commons/crypto/jna/OpenSsl10XNativeJna.java    |   4 +-
 .../commons/crypto/jna/OpenSsl11XNativeJna.java    |   4 +-
 .../org/apache/commons/crypto/jna/OpenSslJna.java  |   2 +-
 .../commons/crypto/jna/OpenSslJnaCipher.java       |  68 ++---
 .../commons/crypto/jna/OpenSslJnaCryptoRandom.java |  30 +--
 .../commons/crypto/jna/OpenSslNativeJna.java       |  38 +--
 .../commons/crypto/random/CryptoRandomFactory.java |  18 +-
 .../commons/crypto/random/JavaCryptoRandom.java    |   6 +-
 .../commons/crypto/random/OpenSslCryptoRandom.java |  16 +-
 .../commons/crypto/random/OsCryptoRandom.java      |  16 +-
 .../commons/crypto/stream/CryptoInputStream.java   |  78 +++---
 .../commons/crypto/stream/CryptoOutputStream.java  |  42 +--
 .../crypto/stream/CtrCryptoInputStream.java        |  88 +++----
 .../crypto/stream/CtrCryptoOutputStream.java       |  62 ++---
 .../crypto/stream/PositionedCryptoInputStream.java |  64 ++---
 .../commons/crypto/stream/input/ChannelInput.java  |  14 +-
 .../commons/crypto/stream/input/StreamInput.java   |  10 +-
 .../crypto/stream/output/ChannelOutput.java        |   4 +-
 .../commons/crypto/stream/output/StreamOutput.java |   4 +-
 .../org/apache/commons/crypto/utils/IoUtils.java   |  16 +-
 .../commons/crypto/utils/ReflectionUtils.java      |  18 +-
 .../org/apache/commons/crypto/utils/Utils.java     |  34 +--
 .../java/org/apache/commons/crypto/CryptoTest.java |   4 +-
 .../commons/crypto/NativeCodeLoaderTest.java       |   2 +-
 .../commons/crypto/cipher/AbstractCipherTest.java  |  86 +++----
 .../crypto/cipher/CryptoCipherFactoryTest.java     |  12 +-
 .../commons/crypto/cipher/GcmCipherTest.java       | 286 ++++++++++-----------
 .../commons/crypto/cipher/JceCipherTest.java       |   2 +-
 .../commons/crypto/cipher/OpenSslCipherTest.java   |  24 +-
 .../org/apache/commons/crypto/cipher/TestData.java |   2 +-
 .../crypto/examples/CipherByteArrayExample.java    |  20 +-
 .../crypto/examples/CipherByteBufferExample.java   |  14 +-
 .../commons/crypto/examples/RandomExample.java     |   8 +-
 .../commons/crypto/examples/StreamExample.java     |  14 +-
 .../crypto/jna/AbstractCipherJnaStreamTest.java    |   2 +-
 .../crypto/jna/OpenSslJnaCryptoRandomTest.java     |   4 +-
 .../commons/crypto/random/AbstractRandom.java      |   2 +-
 .../commons/crypto/random/AbstractRandomTest.java  |  10 +-
 .../crypto/random/CryptoRandomFactoryTest.java     |  26 +-
 .../apache/commons/crypto/random/DummyRandom.java  |   2 +-
 .../commons/crypto/random/FailingRandom.java       |   4 +-
 .../crypto/random/JavaCryptoRandomTest.java        |   4 +-
 .../crypto/random/OpenSslCryptoRandomTest.java     |   4 +-
 .../commons/crypto/random/OsCryptoRandomTest.java  |   8 +-
 .../crypto/stream/AbstractCipherStreamTest.java    | 106 ++++----
 .../commons/crypto/stream/CtrCryptoStreamTest.java |   8 +-
 .../stream/PositionedCryptoInputStreamTest.java    | 130 +++++-----
 .../org/apache/commons/crypto/utils/EnumTest.java  |   4 +-
 60 files changed, 832 insertions(+), 832 deletions(-)

diff --git a/src/main/java/org/apache/commons/crypto/Crypto.java b/src/main/java/org/apache/commons/crypto/Crypto.java
index bbaf7c8..dd5cbba 100644
--- a/src/main/java/org/apache/commons/crypto/Crypto.java
+++ b/src/main/java/org/apache/commons/crypto/Crypto.java
@@ -62,13 +62,13 @@ public final class Crypto {
          * @return Properties contains project version.
          */
         private static Properties getComponentProperties() {
-            URL url = Crypto.class.getResource("/org/apache/commons/crypto/component.properties");
+            final URL url = Crypto.class.getResource("/org/apache/commons/crypto/component.properties");
             if (url != null) {
-                Properties versionData = new Properties();
+                final Properties versionData = new Properties();
                 try (InputStream openStream = url.openStream()) {
                     versionData.load(openStream);
                     return versionData;
-                } catch (IOException e) {  // NOPMD
+                } catch (final IOException e) {  // NOPMD
                 }
             }
             return new Properties(); // make sure field is not null
@@ -126,7 +126,7 @@ public final class Crypto {
      * @param args don't use the args
      * @throws Exception if getCryptoRandom or getCryptoCipher get error.
      */
-    public static void main(String args[]) throws Exception {
+    public static void main(final String args[]) throws Exception {
         System.out.println(getComponentName() + " " + getComponentVersion());
         if (isNativeCodeLoaded()) {
             System.out.println("Native code loaded OK " + OpenSslInfoNative.NativeVersion());
@@ -135,13 +135,13 @@ public final class Crypto {
             System.out.println("OpenSSL library loaded OK, version: 0x" + Long.toHexString(OpenSslInfoNative.OpenSSL()));
             System.out.println("OpenSSL library info " + OpenSslInfoNative.OpenSSLVersion(0));
             {
-                Properties props = new Properties();
+                final Properties props = new Properties();
                 props.setProperty(CryptoRandomFactory.CLASSES_KEY, CryptoRandomFactory.RandomProvider.OPENSSL.getClassName());
                 CryptoRandomFactory.getCryptoRandom(props);
                 System.out.println("Random instance created OK");
             }
             {
-                Properties props = new Properties();
+                final Properties props = new Properties();
                 props.setProperty(CryptoCipherFactory.CLASSES_KEY, CryptoCipherFactory.CipherProvider.OPENSSL.getClassName());
                 CryptoCipherFactory.getCryptoCipher("AES/CTR/NoPadding", props);
                 System.out.println("Cipher instance created OK");
diff --git a/src/main/java/org/apache/commons/crypto/NativeCodeLoader.java b/src/main/java/org/apache/commons/crypto/NativeCodeLoader.java
index e957762..e65d6ba 100644
--- a/src/main/java/org/apache/commons/crypto/NativeCodeLoader.java
+++ b/src/main/java/org/apache/commons/crypto/NativeCodeLoader.java
@@ -59,7 +59,7 @@ final class NativeCodeLoader {
      */
     static Throwable loadLibrary() {
         try {
-            File nativeLibFile = findNativeLibrary();
+            final File nativeLibFile = findNativeLibrary();
             if (nativeLibFile != null) {
                 // Load extracted or specified native library.
                 System.load(nativeLibFile.getAbsolutePath());
@@ -68,9 +68,9 @@ final class NativeCodeLoader {
                 System.loadLibrary("commons-crypto");
             }
             return null; // OK
-        } catch (Exception t) {
+        } catch (final Exception t) {
             return t;
-        } catch (UnsatisfiedLinkError t) {
+        } catch (final UnsatisfiedLinkError t) {
             return t;
         }
     }
@@ -93,7 +93,7 @@ final class NativeCodeLoader {
             nativeLibraryName = System.mapLibraryName("commons-crypto");
         }
         if (nativeLibraryPath != null) {
-            File nativeLib = new File(nativeLibraryPath, nativeLibraryName);
+            final File nativeLib = new File(nativeLibraryPath, nativeLibraryName);
             if (nativeLib.exists()) {
                 return nativeLib;
             }
@@ -105,7 +105,7 @@ final class NativeCodeLoader {
         boolean hasNativeLib = hasResource(nativeLibraryPath + "/"
                 + nativeLibraryName);
         if (!hasNativeLib) {
-            String altName = "libcommons-crypto.jnilib";
+            final String altName = "libcommons-crypto.jnilib";
             if (OsInfo.getOSName().equals("Mac") && hasResource(nativeLibraryPath + "/" + altName)) {
                 // Fix for openjdk7 for Mac
                 nativeLibraryName = altName;
@@ -114,7 +114,7 @@ final class NativeCodeLoader {
         }
 
         if (!hasNativeLib) {
-            String errorMessage = String.format(
+            final String errorMessage = String.format(
                     "no native library is found for os.name=%s and os.arch=%s",
                     OsInfo.getOSName(), OsInfo.getArchName());
             throw new RuntimeException(errorMessage);
@@ -122,7 +122,7 @@ final class NativeCodeLoader {
 
         // Temporary folder for the native lib. Use the value of
         // commons-crypto.tempdir or java.io.tmpdir
-        String tempFolder = new File(props.getProperty(Crypto.LIB_TEMPDIR_KEY,
+        final String tempFolder = new File(props.getProperty(Crypto.LIB_TEMPDIR_KEY,
         System.getProperty("java.io.tmpdir"))).getAbsolutePath();
 
         // Extract and load a native library inside the jar file
@@ -139,27 +139,27 @@ final class NativeCodeLoader {
      *        commons-crypto.tempdir or java.io.tmpdir.
      * @return the library file.
      */
-    private static File extractLibraryFile(String libFolderForCurrentOS,
-            String libraryFileName, String targetFolder) {
-        String nativeLibraryFilePath = libFolderForCurrentOS + "/"
+    private static File extractLibraryFile(final String libFolderForCurrentOS,
+            final String libraryFileName, final String targetFolder) {
+        final String nativeLibraryFilePath = libFolderForCurrentOS + "/"
                 + libraryFileName;
 
         // Attach UUID to the native library file to ensure multiple class
         // loaders
         // can read the libcommons-crypto multiple times.
-        String uuid = UUID.randomUUID().toString();
-        String extractedLibFileName = String.format("commons-crypto-%s-%s",
+        final String uuid = UUID.randomUUID().toString();
+        final String extractedLibFileName = String.format("commons-crypto-%s-%s",
                 uuid, libraryFileName);
-        File extractedLibFile = new File(targetFolder, extractedLibFileName);
+        final File extractedLibFile = new File(targetFolder, extractedLibFileName);
 
         InputStream reader = null;
         try {
             // Extract a native library file into the target directory
             reader = NativeCodeLoader.class
                     .getResourceAsStream(nativeLibraryFilePath);
-            FileOutputStream writer = new FileOutputStream(extractedLibFile);
+            final FileOutputStream writer = new FileOutputStream(extractedLibFile);
             try {
-                byte[] buffer = new byte[8192];
+                final byte[] buffer = new byte[8192];
                 int bytesRead;
                 while ((bytesRead = reader.read(buffer)) != -1) {
                     writer.write(buffer, 0, bytesRead);
@@ -206,7 +206,7 @@ final class NativeCodeLoader {
             }
 
             return extractedLibFile;
-        } catch (IOException e) {
+        } catch (final IOException e) {
             return null;
         } finally {
             IoUtils.cleanup(reader);
@@ -232,13 +232,13 @@ final class NativeCodeLoader {
 
         int ch = in1.read();
         while (ch != -1) {
-            int ch2 = in2.read();
+            final int ch2 = in2.read();
             if (ch != ch2) {
                 return false;
             }
             ch = in1.read();
         }
-        int ch2 = in2.read();
+        final int ch2 = in2.read();
         return ch2 == -1;
     }
 
@@ -248,7 +248,7 @@ final class NativeCodeLoader {
      * @param path the path.
      * @return the boolean.
      */
-    private static boolean hasResource(String path) {
+    private static boolean hasResource(final String path) {
         return NativeCodeLoader.class.getResource(path) != null;
     }
 
diff --git a/src/main/java/org/apache/commons/crypto/OsInfo.java b/src/main/java/org/apache/commons/crypto/OsInfo.java
index 4c2e20f..0517da8 100644
--- a/src/main/java/org/apache/commons/crypto/OsInfo.java
+++ b/src/main/java/org/apache/commons/crypto/OsInfo.java
@@ -114,7 +114,7 @@ final class OsInfo {
      *
      * @param args the argv.
      */
-    public static void main(String[] args) {
+    public static void main(final String[] args) {
         if (args.length >= 1) {
             if ("--os".equals(args[0])) {
                 System.out.print(getOSName());
@@ -153,30 +153,30 @@ final class OsInfo {
      */
     static String getArchName() {
         // if running Linux on ARM, need to determine ABI of JVM
-        String osArch = System.getProperty("os.arch");
+        final String osArch = System.getProperty("os.arch");
         if (osArch.startsWith("arm")
                 && System.getProperty("os.name").contains("Linux")) {
-            String javaHome = System.getProperty("java.home");
+            final String javaHome = System.getProperty("java.home");
             try {
                 // determine if first JVM found uses ARM hard-float ABI
-                String[] cmdarray = {
+                final String[] cmdarray = {
                         "/bin/sh",
                         "-c",
                         "find '"
                                 + javaHome
                                 + "' -name 'libjvm.so' | head -1 | xargs readelf -A | "
                                 + "grep 'Tag_ABI_VFP_args: VFP registers'" };
-                int exitCode = Runtime.getRuntime().exec(cmdarray).waitFor();
+                final int exitCode = Runtime.getRuntime().exec(cmdarray).waitFor();
                 if (exitCode == 0) {
                     return "armhf";
                 }
-            } catch (IOException e) { //NOPMD
+            } catch (final IOException e) { //NOPMD
                 // ignored: fall back to "arm" arch (soft-float ABI)
-            } catch (InterruptedException e) { //NOPMD
+            } catch (final InterruptedException e) { //NOPMD
                 // ignored: fall back to "arm" arch (soft-float ABI)
             }
         } else {
-            String lc = osArch.toLowerCase(Locale.US);
+            final String lc = osArch.toLowerCase(Locale.US);
             if (archMapping.containsKey(lc)) {
                 return archMapping.get(lc);
             }
@@ -190,7 +190,7 @@ final class OsInfo {
      * @param osName the OS name.
      * @return the folder name.
      */
-    private static String translateOSNameToFolderName(String osName) {
+    private static String translateOSNameToFolderName(final String osName) {
         if (osName.contains("Windows")) {
             return "Windows";
         } else if (osName.contains("Mac")) {
@@ -212,7 +212,7 @@ final class OsInfo {
      * @param archName the architecture name.
      * @return the folder name.
      */
-    private static String translateArchNameToFolderName(String archName) {
+    private static String translateArchNameToFolderName(final String archName) {
         return archName.replaceAll("\\W", "");
     }
 }
diff --git a/src/main/java/org/apache/commons/crypto/cipher/CryptoCipher.java b/src/main/java/org/apache/commons/crypto/cipher/CryptoCipher.java
index ea1edfd..5c5db9b 100644
--- a/src/main/java/org/apache/commons/crypto/cipher/CryptoCipher.java
+++ b/src/main/java/org/apache/commons/crypto/cipher/CryptoCipher.java
@@ -177,7 +177,7 @@ public interface CryptoCipher extends Closeable {
      * has not been overridden by an implementation
      *
      */
-    default void updateAAD(byte[] aad)
+    default void updateAAD(final byte[] aad)
             throws IllegalArgumentException, IllegalStateException, UnsupportedOperationException {
       throw new UnsupportedOperationException();
     }
@@ -205,7 +205,7 @@ public interface CryptoCipher extends Closeable {
      * has not been overridden by an implementation
      *
      */
-    default void updateAAD(ByteBuffer aad)
+    default void updateAAD(final ByteBuffer aad)
             throws IllegalArgumentException, IllegalStateException, UnsupportedOperationException {
       throw new UnsupportedOperationException();
     }
diff --git a/src/main/java/org/apache/commons/crypto/cipher/CryptoCipherFactory.java b/src/main/java/org/apache/commons/crypto/cipher/CryptoCipherFactory.java
index c9fe49a..6e19f75 100644
--- a/src/main/java/org/apache/commons/crypto/cipher/CryptoCipherFactory.java
+++ b/src/main/java/org/apache/commons/crypto/cipher/CryptoCipherFactory.java
@@ -89,7 +89,7 @@ public class CryptoCipherFactory {
          * The private constructor.
          * @param klass the Class of CryptoCipher
          */
-        private CipherProvider(Class<? extends CryptoCipher> klass) {
+        private CipherProvider(final Class<? extends CryptoCipher> klass) {
             this.klass = klass;
             this.className = klass.getName();
         }
@@ -143,8 +143,8 @@ public class CryptoCipherFactory {
      * @throws GeneralSecurityException if cipher initialize failed
      * @throws IllegalArgumentException if no classname(s) were provided
      */
-    public static CryptoCipher getCryptoCipher(String transformation,
-                                           Properties props) throws GeneralSecurityException {
+    public static CryptoCipher getCryptoCipher(final String transformation,
+                                           final Properties props) throws GeneralSecurityException {
 
         final List<String> names = Utils.splitClassNames(getCipherClassString(props), ",");
         if (names.size() == 0) {
@@ -153,16 +153,16 @@ public class CryptoCipherFactory {
         CryptoCipher cipher = null;
         Exception lastException = null;
 
-        StringBuilder errorMessage = new StringBuilder("CryptoCipher ");
-        for (String klass : names) {
+        final StringBuilder errorMessage = new StringBuilder("CryptoCipher ");
+        for (final String klass : names) {
             try {
-                Class<?> cls = ReflectionUtils.getClassByName(klass);
+                final Class<?> cls = ReflectionUtils.getClassByName(klass);
                 cipher = ReflectionUtils.newInstance(cls.asSubclass
                         (CryptoCipher.class), props, transformation);
                 if (cipher != null) {
                     break;
                 }
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 lastException = e;
                 errorMessage.append("{" + klass + "}");
             }
@@ -187,7 +187,7 @@ public class CryptoCipherFactory {
      * @return CryptoCipher the cipher object (defaults to OpenSslCipher if available, else JceCipher)
      * @throws GeneralSecurityException if JCE cipher initialize failed
      */
-    public static CryptoCipher getCryptoCipher(String transformation)
+    public static CryptoCipher getCryptoCipher(final String transformation)
             throws GeneralSecurityException {
         return getCryptoCipher(transformation, new Properties());
     }
@@ -199,7 +199,7 @@ public class CryptoCipherFactory {
      *        properties.
      * @return the cipher class based on the props.
      */
-    private static String getCipherClassString(Properties props) {
+    private static String getCipherClassString(final Properties props) {
         String cipherClassString = props.getProperty(CryptoCipherFactory.CLASSES_KEY, CLASSES_DEFAULT);
         if (cipherClassString.isEmpty()) { // TODO does it make sense to treat the empty string as the default?
             cipherClassString = CLASSES_DEFAULT;
diff --git a/src/main/java/org/apache/commons/crypto/cipher/JceCipher.java b/src/main/java/org/apache/commons/crypto/cipher/JceCipher.java
index a2980d9..822e2ff 100644
--- a/src/main/java/org/apache/commons/crypto/cipher/JceCipher.java
+++ b/src/main/java/org/apache/commons/crypto/cipher/JceCipher.java
@@ -46,7 +46,7 @@ class JceCipher implements CryptoCipher {
      */
     // N.B. this class is not public/protected so does not appear in the main Javadoc
     // Please ensure that property use is documented in the enum CryptoRandomFactory.RandomProvider
-    public JceCipher(Properties props, String transformation)
+    public JceCipher(final Properties props, final String transformation)
             throws GeneralSecurityException {
         final String provider = props.getProperty(CryptoCipherFactory.JCE_PROVIDER_KEY);
         if (provider == null || provider.isEmpty()) {
@@ -95,7 +95,7 @@ class JceCipher implements CryptoCipher {
      *         configured jurisdiction policy files).
      */
     @Override
-    public void init(int mode, Key key, AlgorithmParameterSpec params)
+    public void init(final int mode, final Key key, final AlgorithmParameterSpec params)
             throws InvalidKeyException, InvalidAlgorithmParameterException {
         Objects.requireNonNull(key, "key");
         Objects.requireNonNull(params, "params");
@@ -115,7 +115,7 @@ class JceCipher implements CryptoCipher {
      *         buffer
      */
     @Override
-    public int update(ByteBuffer inBuffer, ByteBuffer outBuffer)
+    public int update(final ByteBuffer inBuffer, final ByteBuffer outBuffer)
             throws ShortBufferException {
         return cipher.update(inBuffer, outBuffer);
     }
@@ -134,8 +134,8 @@ class JceCipher implements CryptoCipher {
      *         byte array
      */
     @Override
-    public int update(byte[] input, int inputOffset, int inputLen,
-            byte[] output, int outputOffset) throws ShortBufferException {
+    public int update(final byte[] input, final int inputOffset, final int inputLen,
+            final byte[] output, final int outputOffset) throws ShortBufferException {
         return cipher
                 .update(input, inputOffset, inputLen, output, outputOffset);
     }
@@ -160,7 +160,7 @@ class JceCipher implements CryptoCipher {
      *         hold the result
      */
     @Override
-    public int doFinal(ByteBuffer inBuffer, ByteBuffer outBuffer)
+    public int doFinal(final ByteBuffer inBuffer, final ByteBuffer outBuffer)
             throws ShortBufferException, IllegalBlockSizeException,
             BadPaddingException {
         return cipher.doFinal(inBuffer, outBuffer);
@@ -188,8 +188,8 @@ class JceCipher implements CryptoCipher {
      *         to process the input data provided.
      */
     @Override
-    public int doFinal(byte[] input, int inputOffset, int inputLen,
-            byte[] output, int outputOffset) throws ShortBufferException,
+    public int doFinal(final byte[] input, final int inputOffset, final int inputLen,
+            final byte[] output, final int outputOffset) throws ShortBufferException,
             IllegalBlockSizeException, BadPaddingException {
         return cipher.doFinal(input, inputOffset, inputLen, output,
                 outputOffset);
@@ -219,7 +219,7 @@ class JceCipher implements CryptoCipher {
      * support such operation
      */
     @Override
-    public void updateAAD(byte[] aad) {
+    public void updateAAD(final byte[] aad) {
         cipher.updateAAD(aad);
     }
 
@@ -246,7 +246,7 @@ class JceCipher implements CryptoCipher {
      * support such operation
      */
     @Override
-    public void updateAAD(ByteBuffer aad) {
+    public void updateAAD(final ByteBuffer aad) {
         cipher.updateAAD(aad);
     }
 
diff --git a/src/main/java/org/apache/commons/crypto/cipher/OpenSsl.java b/src/main/java/org/apache/commons/crypto/cipher/OpenSsl.java
index 31e053b..38bad73 100644
--- a/src/main/java/org/apache/commons/crypto/cipher/OpenSsl.java
+++ b/src/main/java/org/apache/commons/crypto/cipher/OpenSsl.java
@@ -54,11 +54,11 @@ final class OpenSsl {
          * @return the Algorithm mode.
          * @throws NoSuchAlgorithmException if the algorithm is not available.
          */
-        static int get(String algorithm, String mode)
+        static int get(final String algorithm, final String mode)
                 throws NoSuchAlgorithmException {
             try {
                 return AlgorithmMode.valueOf(algorithm + "_" + mode).ordinal();
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 throw new NoSuchAlgorithmException(
                         "Doesn't support algorithm: " + algorithm
                                 + " and mode: " + mode);
@@ -76,10 +76,10 @@ final class OpenSsl {
          * @return the value of Padding.
          * @throws NoSuchPaddingException if the padding is not available.
          */
-        static int get(String padding) throws NoSuchPaddingException {
+        static int get(final String padding) throws NoSuchPaddingException {
             try {
                 return Padding.valueOf(padding).ordinal();
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 throw new NoSuchPaddingException("Doesn't support padding: "
                         + padding);
             }
@@ -96,9 +96,9 @@ final class OpenSsl {
             } else {
                 loadingFailure = Crypto.getLoadingError();
             }
-        } catch (Exception t) {
+        } catch (final Exception t) {
             loadingFailure = t;
-        } catch (UnsatisfiedLinkError t) {
+        } catch (final UnsatisfiedLinkError t) {
             loadingFailure = t;
         } finally {
             loadingFailureReason = loadingFailure;
@@ -121,7 +121,7 @@ final class OpenSsl {
      * @param algorithm the algorithm.
      * @param padding the padding.
      */
-    private OpenSsl(long context, int algorithm, int padding) {
+    private OpenSsl(final long context, final int algorithm, final int padding) {
         if (algorithm == AlgorithmMode.AES_GCM.ordinal()) {
             opensslBlockCipher = new OpenSslGaloisCounterMode(context, algorithm, padding);
         } else {
@@ -143,16 +143,16 @@ final class OpenSsl {
      *         padding scheme that is not available.
      * @throws IllegalStateException if native code cannot be initialised
      */
-    public static OpenSsl getInstance(String transformation)
+    public static OpenSsl getInstance(final String transformation)
             throws NoSuchAlgorithmException, NoSuchPaddingException {
         if (loadingFailureReason != null) {
             throw new IllegalStateException(loadingFailureReason);
         }
-        Transform transform = tokenizeTransformation(transformation);
-        int algorithmMode = AlgorithmMode.get(transform.algorithm,
+        final Transform transform = tokenizeTransformation(transformation);
+        final int algorithmMode = AlgorithmMode.get(transform.algorithm,
                 transform.mode);
-        int padding = Padding.get(transform.padding);
-        long context = OpenSslNative.initContext(algorithmMode, padding);
+        final int padding = Padding.get(transform.padding);
+        final long context = OpenSslNative.initContext(algorithmMode, padding);
         return new OpenSsl(context, algorithmMode, padding);
     }
 
@@ -169,7 +169,7 @@ final class OpenSsl {
          * @param mode the mode.
          * @param padding the padding.
          */
-        public Transform(String algorithm, String mode, String padding) {
+        public Transform(final String algorithm, final String mode, final String padding) {
             this.algorithm = algorithm;
             this.mode = mode;
             this.padding = padding;
@@ -183,7 +183,7 @@ final class OpenSsl {
      * @return the {@link Transform} instance.
      * @throws NoSuchAlgorithmException if the transformation is null.
      */
-    private static Transform tokenizeTransformation(String transformation)
+    private static Transform tokenizeTransformation(final String transformation)
             throws NoSuchAlgorithmException {
         if (transformation == null) {
             throw new NoSuchAlgorithmException("No transformation given.");
@@ -194,9 +194,9 @@ final class OpenSsl {
          * algorithm (e.g., AES) index 1: mode (e.g., CTR) index 2: padding
          * (e.g., NoPadding)
          */
-        String[] parts = new String[3];
+        final String[] parts = new String[3];
         int count = 0;
-        StringTokenizer parser = new StringTokenizer(transformation, "/");
+        final StringTokenizer parser = new StringTokenizer(transformation, "/");
         while (parser.hasMoreTokens() && count < 3) {
             parts[count++] = parser.nextToken().trim();
         }
@@ -215,7 +215,7 @@ final class OpenSsl {
      * @param params the algorithm parameters
      * @throws InvalidAlgorithmParameterException if IV length is wrong
      */
-    public void init(int mode, byte[] key, AlgorithmParameterSpec params)
+    public void init(final int mode, final byte[] key, final AlgorithmParameterSpec params)
             throws InvalidAlgorithmParameterException {
         opensslBlockCipher.init(mode, key, params);
     }
@@ -248,7 +248,7 @@ final class OpenSsl {
      * @throws ShortBufferException if there is insufficient space in the output
      *         buffer
      */
-    public int update(ByteBuffer input, ByteBuffer output)
+    public int update(final ByteBuffer input, final ByteBuffer output)
             throws ShortBufferException {
         Utils.checkArgument(input.isDirect() && output.isDirect(),
                 "Direct buffers are required.");
@@ -268,8 +268,8 @@ final class OpenSsl {
      * @throws ShortBufferException if there is insufficient space in the output
      *         byte array
      */
-    public int update(byte[] input, int inputOffset, int inputLen,
-            byte[] output, int outputOffset) throws ShortBufferException {
+    public int update(final byte[] input, final int inputOffset, final int inputLen,
+            final byte[] output, final int outputOffset) throws ShortBufferException {
         return opensslBlockCipher.update(input, inputOffset, inputLen, output, outputOffset);
     }
 
@@ -294,8 +294,8 @@ final class OpenSsl {
      *         multiple of block size; or if this encryption algorithm is unable
      *         to process the input data provided.
      */
-    public int doFinal(byte[] input, int inputOffset, int inputLen,
-                       byte[] output, int outputOffset)
+    public int doFinal(final byte[] input, final int inputOffset, final int inputLen,
+                       final byte[] output, final int outputOffset)
             throws ShortBufferException, IllegalBlockSizeException,
             BadPaddingException{
         return opensslBlockCipher.doFinal(input, inputOffset, inputLen, output, outputOffset);
@@ -341,7 +341,7 @@ final class OpenSsl {
      *         (un)padding has been requested, but the decrypted data is not
      *         bounded by the appropriate padding bytes
      */
-    public int doFinal(ByteBuffer input, ByteBuffer output) throws ShortBufferException,
+    public int doFinal(final ByteBuffer input, final ByteBuffer output) throws ShortBufferException,
             IllegalBlockSizeException, BadPaddingException {
         Utils.checkArgument(output.isDirect(), "Direct buffer is required.");
 
@@ -362,7 +362,7 @@ final class OpenSsl {
      * @param aad the buffer containing the Additional Authentication Data
      *
      */
-    public void updateAAD(byte[] aad) {
+    public void updateAAD(final byte[] aad) {
         this.opensslBlockCipher.updateAAD(aad);
     }
 
diff --git a/src/main/java/org/apache/commons/crypto/cipher/OpenSslCipher.java b/src/main/java/org/apache/commons/crypto/cipher/OpenSslCipher.java
index a149f70..124113b 100644
--- a/src/main/java/org/apache/commons/crypto/cipher/OpenSslCipher.java
+++ b/src/main/java/org/apache/commons/crypto/cipher/OpenSslCipher.java
@@ -50,11 +50,11 @@ class OpenSslCipher implements CryptoCipher {
      */
     // N.B. this class is not public/protected so does not appear in the main Javadoc
     // Please ensure that property use is documented in the enum CryptoRandomFactory.RandomProvider
-    public OpenSslCipher(Properties props, String transformation) // NOPMD
+    public OpenSslCipher(final Properties props, final String transformation) // NOPMD
             throws GeneralSecurityException {
         this.transformation = transformation;
 
-        Throwable loadingFailureReason = OpenSsl.getLoadingFailureReason();
+        final Throwable loadingFailureReason = OpenSsl.getLoadingFailureReason();
         if (loadingFailureReason != null) {
             throw new RuntimeException(loadingFailureReason);
         }
@@ -97,7 +97,7 @@ class OpenSslCipher implements CryptoCipher {
      * @throws InvalidAlgorithmParameterException if IV length is wrong
      */
     @Override
-    public void init(int mode, Key key, AlgorithmParameterSpec params)
+    public void init(final int mode, final Key key, final AlgorithmParameterSpec params)
             throws InvalidKeyException, InvalidAlgorithmParameterException {
         Objects.requireNonNull(key, "key");
         Objects.requireNonNull(params, "params");
@@ -121,7 +121,7 @@ class OpenSslCipher implements CryptoCipher {
      *         buffer
      */
     @Override
-    public int update(ByteBuffer inBuffer, ByteBuffer outBuffer)
+    public int update(final ByteBuffer inBuffer, final ByteBuffer outBuffer)
             throws ShortBufferException {
         return openSslEngine.update(inBuffer, outBuffer);
     }
@@ -140,8 +140,8 @@ class OpenSslCipher implements CryptoCipher {
      *         byte array
      */
     @Override
-    public int update(byte[] input, int inputOffset, int inputLen,
-            byte[] output, int outputOffset) throws ShortBufferException {
+    public int update(final byte[] input, final int inputOffset, final int inputLen,
+            final byte[] output, final int outputOffset) throws ShortBufferException {
         return openSslEngine
                 .update(input, inputOffset, inputLen, output, outputOffset);
     }
@@ -166,7 +166,7 @@ class OpenSslCipher implements CryptoCipher {
      *         hold the result
      */
     @Override
-    public int doFinal(ByteBuffer inBuffer, ByteBuffer outBuffer)
+    public int doFinal(final ByteBuffer inBuffer, final ByteBuffer outBuffer)
             throws ShortBufferException, IllegalBlockSizeException,
             BadPaddingException {
         return openSslEngine.doFinal(inBuffer, outBuffer);
@@ -194,8 +194,8 @@ class OpenSslCipher implements CryptoCipher {
      *         to process the input data provided.
      */
     @Override
-    public int doFinal(byte[] input, int inputOffset, int inputLen,
-            byte[] output, int outputOffset) throws ShortBufferException,
+    public int doFinal(final byte[] input, final int inputOffset, final int inputLen,
+            final byte[] output, final int outputOffset) throws ShortBufferException,
             IllegalBlockSizeException, BadPaddingException {
         return openSslEngine.doFinal(input, inputOffset, inputLen, output,outputOffset);
     }
@@ -224,7 +224,7 @@ class OpenSslCipher implements CryptoCipher {
      * doesn't support this operation.
      */
     @Override
-    public void updateAAD(byte[] aad) throws IllegalArgumentException,
+    public void updateAAD(final byte[] aad) throws IllegalArgumentException,
             IllegalStateException, UnsupportedOperationException {
         if (aad == null) {
             throw new IllegalArgumentException("aad buffer is null");
@@ -262,7 +262,7 @@ class OpenSslCipher implements CryptoCipher {
      * doesn't support this operation.
      */
     @Override
-    public void updateAAD(ByteBuffer aad) throws IllegalArgumentException,
+    public void updateAAD(final ByteBuffer aad) throws IllegalArgumentException,
             IllegalStateException, UnsupportedOperationException {
         if (aad == null) {
             throw new IllegalArgumentException("aad buffer is null");
@@ -271,11 +271,11 @@ class OpenSslCipher implements CryptoCipher {
             throw new IllegalStateException("Cipher not initialized");
         }
 
-        int aadLen = aad.limit() - aad.position();
+        final int aadLen = aad.limit() - aad.position();
         if (aadLen == 0) {
             return;
         }
-        byte[] aadBytes = new byte[aadLen];
+        final byte[] aadBytes = new byte[aadLen];
         aad.get(aadBytes);
         openSslEngine.updateAAD(aadBytes);
     }
diff --git a/src/main/java/org/apache/commons/crypto/cipher/OpenSslCommonMode.java b/src/main/java/org/apache/commons/crypto/cipher/OpenSslCommonMode.java
index 91475fc..bb9be56 100644
--- a/src/main/java/org/apache/commons/crypto/cipher/OpenSslCommonMode.java
+++ b/src/main/java/org/apache/commons/crypto/cipher/OpenSslCommonMode.java
@@ -32,12 +32,12 @@ import java.security.spec.AlgorithmParameterSpec;
  */
 class OpenSslCommonMode extends OpenSslFeedbackCipher {
 
-    OpenSslCommonMode(long context, int algorithmMode, int padding) {
+    OpenSslCommonMode(final long context, final int algorithmMode, final int padding) {
         super(context, algorithmMode, padding);
     }
 
     @Override
-    public void init(int mode, byte[] key, AlgorithmParameterSpec params)
+    public void init(final int mode, final byte[] key, final AlgorithmParameterSpec params)
             throws InvalidAlgorithmParameterException {
         this.cipherMode = mode;
         byte[] iv;
@@ -51,10 +51,10 @@ class OpenSslCommonMode extends OpenSslFeedbackCipher {
     }
 
     @Override
-    public int update(ByteBuffer input, ByteBuffer output) throws ShortBufferException {
+    public int update(final ByteBuffer input, final ByteBuffer output) throws ShortBufferException {
         checkState();
 
-        int len = OpenSslNative.update(context, input, input.position(),
+        final int len = OpenSslNative.update(context, input, input.position(),
                 input.remaining(), output, output.position(),
                 output.remaining());
         input.position(input.limit());
@@ -64,7 +64,7 @@ class OpenSslCommonMode extends OpenSslFeedbackCipher {
     }
 
     @Override
-    public int update(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
+    public int update(final byte[] input, final int inputOffset, final int inputLen, final byte[] output, final int outputOffset)
             throws ShortBufferException {
         checkState();
 
@@ -73,7 +73,7 @@ class OpenSslCommonMode extends OpenSslFeedbackCipher {
     }
 
     @Override
-    public int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
+    public int doFinal(final byte[] input, final int inputOffset, final int inputLen, final byte[] output, final int outputOffset)
             throws ShortBufferException, IllegalBlockSizeException, BadPaddingException {
         checkState();
 
@@ -87,7 +87,7 @@ class OpenSslCommonMode extends OpenSslFeedbackCipher {
     }
 
     @Override
-    public int doFinal(ByteBuffer input, ByteBuffer output)
+    public int doFinal(final ByteBuffer input, final ByteBuffer output)
             throws ShortBufferException, IllegalBlockSizeException, BadPaddingException {
         checkState();
 
@@ -109,7 +109,7 @@ class OpenSslCommonMode extends OpenSslFeedbackCipher {
     }
 
     @Override
-    public void updateAAD(byte[] aad) {
+    public void updateAAD(final byte[] aad) {
         throw new UnsupportedOperationException(
                 "The underlying Cipher implementation "
                         + "does not support this method");
diff --git a/src/main/java/org/apache/commons/crypto/cipher/OpenSslEvpCtrlValues.java b/src/main/java/org/apache/commons/crypto/cipher/OpenSslEvpCtrlValues.java
index f826af9..b0315e4 100644
--- a/src/main/java/org/apache/commons/crypto/cipher/OpenSslEvpCtrlValues.java
+++ b/src/main/java/org/apache/commons/crypto/cipher/OpenSslEvpCtrlValues.java
@@ -42,7 +42,7 @@ enum OpenSslEvpCtrlValues {
 
     private final int value;
 
-    OpenSslEvpCtrlValues(int value) {
+    OpenSslEvpCtrlValues(final int value) {
         this.value = value;
     }
 
diff --git a/src/main/java/org/apache/commons/crypto/cipher/OpenSslFeedbackCipher.java b/src/main/java/org/apache/commons/crypto/cipher/OpenSslFeedbackCipher.java
index 67f8058..7d504ae 100644
--- a/src/main/java/org/apache/commons/crypto/cipher/OpenSslFeedbackCipher.java
+++ b/src/main/java/org/apache/commons/crypto/cipher/OpenSslFeedbackCipher.java
@@ -37,7 +37,7 @@ abstract class OpenSslFeedbackCipher {
 
     protected int cipherMode = OpenSsl.DECRYPT_MODE;
 
-    OpenSslFeedbackCipher(long context, int algorithmMode, int padding) {
+    OpenSslFeedbackCipher(final long context, final int algorithmMode, final int padding) {
         this.context = context;
         this.algorithmMode = algorithmMode;
         this.padding = padding;
diff --git a/src/main/java/org/apache/commons/crypto/cipher/OpenSslGaloisCounterMode.java b/src/main/java/org/apache/commons/crypto/cipher/OpenSslGaloisCounterMode.java
index 991c475..f8d321d 100644
--- a/src/main/java/org/apache/commons/crypto/cipher/OpenSslGaloisCounterMode.java
+++ b/src/main/java/org/apache/commons/crypto/cipher/OpenSslGaloisCounterMode.java
@@ -46,12 +46,12 @@ class OpenSslGaloisCounterMode extends OpenSslFeedbackCipher {
     // buffer for storing input in decryption, not used for encryption
     private ByteArrayOutputStream inBuffer = null;
 
-    public OpenSslGaloisCounterMode(long context, int algorithmMode, int padding) {
+    public OpenSslGaloisCounterMode(final long context, final int algorithmMode, final int padding) {
         super(context, algorithmMode, padding);
     }
 
     @Override
-    public void init(int mode, byte[] key, AlgorithmParameterSpec params)
+    public void init(final int mode, final byte[] key, final AlgorithmParameterSpec params)
             throws InvalidAlgorithmParameterException {
 
         if (aadBuffer == null) {
@@ -63,7 +63,7 @@ class OpenSslGaloisCounterMode extends OpenSslFeedbackCipher {
         this.cipherMode = mode;
         byte[] iv;
         if (params instanceof GCMParameterSpec) {
-            GCMParameterSpec gcmParam = (GCMParameterSpec) params;
+            final GCMParameterSpec gcmParam = (GCMParameterSpec) params;
             iv = gcmParam.getIV();
             this.tagBitLen = gcmParam.getTLen();
         } else {
@@ -79,7 +79,7 @@ class OpenSslGaloisCounterMode extends OpenSslFeedbackCipher {
     }
 
     @Override
-    public int update(ByteBuffer input, ByteBuffer output) throws ShortBufferException {
+    public int update(final ByteBuffer input, final ByteBuffer output) throws ShortBufferException {
         checkState();
 
         processAAD();
@@ -89,8 +89,8 @@ class OpenSslGaloisCounterMode extends OpenSslFeedbackCipher {
             // store internally until doFinal(decrypt) is called because
             // spec mentioned that only return recovered data after tag
             // is successfully verified
-            int inputLen = input.remaining();
-            byte[] inputBuf = new byte[inputLen];
+            final int inputLen = input.remaining();
+            final byte[] inputBuf = new byte[inputLen];
             input.get(inputBuf, 0, inputLen);
             inBuffer.write(inputBuf, 0, inputLen);
             return 0;
@@ -106,7 +106,7 @@ class OpenSslGaloisCounterMode extends OpenSslFeedbackCipher {
     }
 
     @Override
-    public int update(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
+    public int update(final byte[] input, final int inputOffset, final int inputLen, final byte[] output, final int outputOffset)
             throws ShortBufferException {
         checkState();
 
@@ -125,7 +125,7 @@ class OpenSslGaloisCounterMode extends OpenSslFeedbackCipher {
     }
 
     @Override
-    public int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
+    public int doFinal(final byte[] input, final int inputOffset, final int inputLen, final byte[] output, final int outputOffset)
             throws ShortBufferException, IllegalBlockSizeException, BadPaddingException {
         checkState();
 
@@ -152,12 +152,12 @@ class OpenSslGaloisCounterMode extends OpenSslFeedbackCipher {
                 throw new AEADBadTagException("Input too short - need tag");
             }
 
-            int inputDataLen = inputLenFinal - getTagLen();
+            final int inputDataLen = inputLenFinal - getTagLen();
             len = OpenSslNative.updateByteArray(context, inputFinal, inputOffsetFinal,
                     inputDataLen, output, outputOffset, output.length - outputOffset);
 
             // set tag to EVP_Cipher for integrity verification in doFinal
-            ByteBuffer tag = ByteBuffer.allocate(getTagLen());
+            final ByteBuffer tag = ByteBuffer.allocate(getTagLen());
             tag.put(input, input.length - getTagLen(), getTagLen());
             tag.flip();
             evpCipherCtxCtrl(context, OpenSslEvpCtrlValues.AEAD_SET_TAG.getValue(), getTagLen(), tag);
@@ -182,7 +182,7 @@ class OpenSslGaloisCounterMode extends OpenSslFeedbackCipher {
     }
 
     @Override
-    public int doFinal(ByteBuffer input, ByteBuffer output)
+    public int doFinal(final ByteBuffer input, final ByteBuffer output)
             throws ShortBufferException, IllegalBlockSizeException, BadPaddingException {
         checkState();
 
@@ -191,15 +191,15 @@ class OpenSslGaloisCounterMode extends OpenSslFeedbackCipher {
         int totalLen = 0;
         int len;
         if (this.cipherMode == OpenSsl.DECRYPT_MODE) {
-            ByteBuffer tag = ByteBuffer.allocate(getTagLen());
+            final ByteBuffer tag = ByteBuffer.allocate(getTagLen());
 
             // if GCM-DECRYPT, we have to handle the buffered input
             // and the retrieve the trailing tag from input
             if (inBuffer != null && inBuffer.size() > 0) {
-                byte[] inputBytes = new byte[input.remaining()];
+                final byte[] inputBytes = new byte[input.remaining()];
                 input.get(inputBytes, 0, inputBytes.length);
                 inBuffer.write(inputBytes, 0, inputBytes.length);
-                byte[] inputFinal = inBuffer.toByteArray();
+                final byte[] inputFinal = inBuffer.toByteArray();
                 inBuffer.reset();
 
                 if (inputFinal.length < getTagLen()) {
@@ -267,7 +267,7 @@ class OpenSslGaloisCounterMode extends OpenSslFeedbackCipher {
     }
 
     @Override
-    public void updateAAD(byte[] aad) {
+    public void updateAAD(final byte[] aad) {
         // must be called after initialized.
         if (aadBuffer != null) {
             aadBuffer.write(aad, 0, aad.length);
@@ -296,7 +296,7 @@ class OpenSslGaloisCounterMode extends OpenSslFeedbackCipher {
      * it may set/get any native char or long type to the data buffer(ptr).
      * Here we use ByteBuffer and set nativeOrder to handle the endianness.
      */
-    private void evpCipherCtxCtrl(long context, int type, int arg, ByteBuffer bb) {
+    private void evpCipherCtxCtrl(final long context, final int type, final int arg, final ByteBuffer bb) {
         checkState();
 
         try {
@@ -306,7 +306,7 @@ class OpenSslGaloisCounterMode extends OpenSslFeedbackCipher {
             } else {
                 OpenSslNative.ctrl(context, type, arg, null);
             }
-        } catch (Exception e) {
+        } catch (final Exception e) {
             System.out.println(e.getMessage());
         }
     }
diff --git a/src/main/java/org/apache/commons/crypto/jna/OpenSsl10XNativeJna.java b/src/main/java/org/apache/commons/crypto/jna/OpenSsl10XNativeJna.java
index 190caa1..f281c40 100644
--- a/src/main/java/org/apache/commons/crypto/jna/OpenSsl10XNativeJna.java
+++ b/src/main/java/org/apache/commons/crypto/jna/OpenSsl10XNativeJna.java
@@ -36,9 +36,9 @@ class OpenSsl10XNativeJna {
         try {
             Native.register("crypto");
             ok = true;
-        } catch (Exception e) {
+        } catch (final Exception e) {
             thrown = e;
-        } catch (UnsatisfiedLinkError e) {
+        } catch (final UnsatisfiedLinkError e) {
             thrown = e;
         } finally {
             INIT_OK = ok;
diff --git a/src/main/java/org/apache/commons/crypto/jna/OpenSsl11XNativeJna.java b/src/main/java/org/apache/commons/crypto/jna/OpenSsl11XNativeJna.java
index f07b2d4..5879655 100644
--- a/src/main/java/org/apache/commons/crypto/jna/OpenSsl11XNativeJna.java
+++ b/src/main/java/org/apache/commons/crypto/jna/OpenSsl11XNativeJna.java
@@ -36,9 +36,9 @@ class OpenSsl11XNativeJna {
         try {
             Native.register("crypto");
             ok = true;
-        } catch (Exception e) {
+        } catch (final Exception e) {
             thrown = e;
-        } catch (UnsatisfiedLinkError e) {
+        } catch (final UnsatisfiedLinkError e) {
             thrown = e;
         } finally {
             INIT_OK = ok;
diff --git a/src/main/java/org/apache/commons/crypto/jna/OpenSslJna.java b/src/main/java/org/apache/commons/crypto/jna/OpenSslJna.java
index 061f864..04fedaf 100644
--- a/src/main/java/org/apache/commons/crypto/jna/OpenSslJna.java
+++ b/src/main/java/org/apache/commons/crypto/jna/OpenSslJna.java
@@ -60,7 +60,7 @@ public final class OpenSslJna {
      * @return A pointer to a constant string describing the version of the
      * OpenSSL library or giving information about the library build.
      */
-    static String OpenSSLVersion(int type) {
+    static String OpenSSLVersion(final int type) {
          return OpenSslNativeJna.OpenSSLVersion(type);
     }
 }
diff --git a/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCipher.java b/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCipher.java
index 4204745..0cea292 100644
--- a/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCipher.java
+++ b/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCipher.java
@@ -59,13 +59,13 @@ class OpenSslJnaCipher implements CryptoCipher {
      * @param transformation transformation for OpenSSL cipher
      * @throws GeneralSecurityException if OpenSSL cipher initialize failed
      */
-    public OpenSslJnaCipher(Properties props, String transformation) // NOPMD
+    public OpenSslJnaCipher(final Properties props, final String transformation) // NOPMD
             throws GeneralSecurityException {
         if (!OpenSslJna.isEnabled()) {
             throw new GeneralSecurityException("Could not enable JNA access", OpenSslJna.initialisationError());
         }
         this.transformation = transformation;
-        Transform transform = tokenizeTransformation(transformation);
+        final Transform transform = tokenizeTransformation(transformation);
         algMode = AlgorithmMode.get(transform.algorithm, transform.mode);
 
         if(algMode != AlgorithmMode.AES_CBC && algMode != AlgorithmMode.AES_CTR) {
@@ -87,7 +87,7 @@ class OpenSslJnaCipher implements CryptoCipher {
      * @throws InvalidAlgorithmParameterException if IV length is wrong
      */
     @Override
-    public void init(int mode, Key key, AlgorithmParameterSpec params)
+    public void init(final int mode, final Key key, final AlgorithmParameterSpec params)
             throws InvalidKeyException, InvalidAlgorithmParameterException {
         Objects.requireNonNull(key, "key");
         Objects.requireNonNull(params, "params");
@@ -123,7 +123,7 @@ class OpenSslJnaCipher implements CryptoCipher {
             }
         }
 
-        int retVal = OpenSslNativeJna.EVP_CipherInit_ex(context, algo, null, key.getEncoded(), iv, cipherMode);
+        final int retVal = OpenSslNativeJna.EVP_CipherInit_ex(context, algo, null, key.getEncoded(), iv, cipherMode);
         throwOnError(retVal);
         OpenSslNativeJna.EVP_CIPHER_CTX_set_padding(context, padding);
     }
@@ -139,12 +139,12 @@ class OpenSslJnaCipher implements CryptoCipher {
      *         buffer
      */
     @Override
-    public int update(ByteBuffer inBuffer, ByteBuffer outBuffer)
+    public int update(final ByteBuffer inBuffer, final ByteBuffer outBuffer)
             throws ShortBufferException {
-        int[] outlen = new int[1];
-        int retVal = OpenSslNativeJna.EVP_CipherUpdate(context, outBuffer, outlen, inBuffer, inBuffer.remaining());
+        final int[] outlen = new int[1];
+        final int retVal = OpenSslNativeJna.EVP_CipherUpdate(context, outBuffer, outlen, inBuffer, inBuffer.remaining());
         throwOnError(retVal);
-        int len = outlen[0];
+        final int len = outlen[0];
         inBuffer.position(inBuffer.limit());
         outBuffer.position(outBuffer.position() + len);
         return len;
@@ -164,10 +164,10 @@ class OpenSslJnaCipher implements CryptoCipher {
      *         byte array
      */
     @Override
-    public int update(byte[] input, int inputOffset, int inputLen,
-            byte[] output, int outputOffset) throws ShortBufferException {
-        ByteBuffer outputBuf = ByteBuffer.wrap(output, outputOffset, output.length - outputOffset);
-        ByteBuffer inputBuf = ByteBuffer.wrap(input, inputOffset, inputLen);
+    public int update(final byte[] input, final int inputOffset, final int inputLen,
+            final byte[] output, final int outputOffset) throws ShortBufferException {
+        final ByteBuffer outputBuf = ByteBuffer.wrap(output, outputOffset, output.length - outputOffset);
+        final ByteBuffer inputBuf = ByteBuffer.wrap(input, inputOffset, inputLen);
         return update(inputBuf, outputBuf);
     }
     /**
@@ -190,14 +190,14 @@ class OpenSslJnaCipher implements CryptoCipher {
      *         hold the result
      */
     @Override
-    public int doFinal(ByteBuffer inBuffer, ByteBuffer outBuffer)
+    public int doFinal(final ByteBuffer inBuffer, final ByteBuffer outBuffer)
             throws ShortBufferException, IllegalBlockSizeException,
             BadPaddingException {
-        int uptLen = update(inBuffer, outBuffer);
-        int[] outlen = new int[1];
-        int retVal = OpenSslNativeJna.EVP_CipherFinal_ex(context, outBuffer, outlen);
+        final int uptLen = update(inBuffer, outBuffer);
+        final int[] outlen = new int[1];
+        final int retVal = OpenSslNativeJna.EVP_CipherFinal_ex(context, outBuffer, outlen);
         throwOnError(retVal);
-        int len = uptLen + outlen[0];
+        final int len = uptLen + outlen[0];
         outBuffer.position(outBuffer.position() + outlen[0]);
         return len;
     }
@@ -224,11 +224,11 @@ class OpenSslJnaCipher implements CryptoCipher {
      *         to process the input data provided.
      */
     @Override
-    public int doFinal(byte[] input, int inputOffset, int inputLen,
-            byte[] output, int outputOffset) throws ShortBufferException,
+    public int doFinal(final byte[] input, final int inputOffset, final int inputLen,
+            final byte[] output, final int outputOffset) throws ShortBufferException,
             IllegalBlockSizeException, BadPaddingException {
-        ByteBuffer outputBuf = ByteBuffer.wrap(output, outputOffset, output.length-outputOffset);
-        ByteBuffer inputBuf = ByteBuffer.wrap(input, inputOffset, inputLen);
+        final ByteBuffer outputBuf = ByteBuffer.wrap(output, outputOffset, output.length-outputOffset);
+        final ByteBuffer inputBuf = ByteBuffer.wrap(input, inputOffset, inputLen);
         return doFinal(inputBuf, outputBuf);
     }
 
@@ -257,7 +257,7 @@ class OpenSslJnaCipher implements CryptoCipher {
      * doesn't support this operation.
      */
     @Override
-    public void updateAAD(byte[] aad) throws IllegalArgumentException,
+    public void updateAAD(final byte[] aad) throws IllegalArgumentException,
             IllegalStateException, UnsupportedOperationException {
         //TODO: implement GCM mode using Jna
         throw new UnsupportedOperationException("This is unsupported in Jna Cipher");
@@ -286,7 +286,7 @@ class OpenSslJnaCipher implements CryptoCipher {
      * doesn't support this operation.
      */
     @Override
-    public void updateAAD(ByteBuffer aad) throws IllegalArgumentException,
+    public void updateAAD(final ByteBuffer aad) throws IllegalArgumentException,
             IllegalStateException, UnsupportedOperationException {
         //TODO: implement GCM mode using Jna
         throw new UnsupportedOperationException("This is unsupported in Jna Cipher");
@@ -311,10 +311,10 @@ class OpenSslJnaCipher implements CryptoCipher {
     /**
      * @param retVal the result value of error.
      */
-    private void throwOnError(int retVal) {
+    private void throwOnError(final int retVal) {
         if (retVal != 1) {
-            NativeLong err = OpenSslNativeJna.ERR_peek_error();
-            String errdesc = OpenSslNativeJna.ERR_error_string(err, null);
+            final NativeLong err = OpenSslNativeJna.ERR_peek_error();
+            final String errdesc = OpenSslNativeJna.ERR_error_string(err, null);
 
             if (context != null) {
                 OpenSslNativeJna.EVP_CIPHER_CTX_cleanup(context);
@@ -336,7 +336,7 @@ class OpenSslJnaCipher implements CryptoCipher {
          * @param mode the mode name
          * @param padding the padding name
          */
-        public Transform(String algorithm, String mode, String padding) {
+        public Transform(final String algorithm, final String mode, final String padding) {
             this.algorithm = algorithm;
             this.mode = mode;
             this.padding = padding;
@@ -349,7 +349,7 @@ class OpenSslJnaCipher implements CryptoCipher {
      * @return the Transform
      * @throws NoSuchAlgorithmException if the algorithm is not supported
      */
-    private static Transform tokenizeTransformation(String transformation)
+    private static Transform tokenizeTransformation(final String transformation)
             throws NoSuchAlgorithmException {
         if (transformation == null) {
             throw new NoSuchAlgorithmException("No transformation given.");
@@ -360,9 +360,9 @@ class OpenSslJnaCipher implements CryptoCipher {
          * algorithm (e.g., AES) index 1: mode (e.g., CTR) index 2: padding
          * (e.g., NoPadding)
          */
-        String[] parts = new String[3];
+        final String[] parts = new String[3];
         int count = 0;
-        StringTokenizer parser = new StringTokenizer(transformation, "/");
+        final StringTokenizer parser = new StringTokenizer(transformation, "/");
         while (parser.hasMoreTokens() && count < 3) {
             parts[count++] = parser.nextToken().trim();
         }
@@ -386,10 +386,10 @@ class OpenSslJnaCipher implements CryptoCipher {
          * @return the AlgorithmMode instance
          * @throws NoSuchAlgorithmException if the algorithm is not support
          */
-        static AlgorithmMode get(String algorithm, String mode) throws NoSuchAlgorithmException {
+        static AlgorithmMode get(final String algorithm, final String mode) throws NoSuchAlgorithmException {
             try {
                 return AlgorithmMode.valueOf(algorithm + "_" + mode);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 throw new NoSuchAlgorithmException("Doesn't support algorithm: " + algorithm + " and mode: " + mode);
             }
         }
@@ -408,10 +408,10 @@ class OpenSslJnaCipher implements CryptoCipher {
          * @return the AlgorithmMode instance
          * @throws NoSuchPaddingException if the algorithm is not support
          */
-        static int get(String padding) throws NoSuchPaddingException {
+        static int get(final String padding) throws NoSuchPaddingException {
             try {
                 return Padding.valueOf(padding).ordinal();
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 throw new NoSuchPaddingException("Doesn't support padding: " + padding);
             }
         }
diff --git a/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCryptoRandom.java b/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCryptoRandom.java
index 117d5dc..483cb51 100644
--- a/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCryptoRandom.java
+++ b/src/main/java/org/apache/commons/crypto/jna/OpenSslJnaCryptoRandom.java
@@ -57,7 +57,7 @@ class OpenSslJnaCryptoRandom extends Random implements CryptoRandom {
      * @param props the configuration properties (not used)
      * @throws GeneralSecurityException  if could not enable JNA access
      */
-    public OpenSslJnaCryptoRandom(Properties props) //NOPMD
+    public OpenSslJnaCryptoRandom(final Properties props) //NOPMD
             throws GeneralSecurityException {
         if (!OpenSslJna.isEnabled()) {
             throw new GeneralSecurityException("Could not enable JNA access", OpenSslJna.initialisationError());
@@ -67,19 +67,19 @@ class OpenSslJnaCryptoRandom extends Random implements CryptoRandom {
         try {
             OpenSslNativeJna.ENGINE_load_rdrand();
             rdrandEngine = OpenSslNativeJna.ENGINE_by_id("rdrand");
-            int ENGINE_METHOD_RAND = 0x0008;
+            final int ENGINE_METHOD_RAND = 0x0008;
             if(rdrandEngine != null) {
-                int rc = OpenSslNativeJna.ENGINE_init(rdrandEngine);
+                final int rc = OpenSslNativeJna.ENGINE_init(rdrandEngine);
 
                 if(rc != 0) {
-                    int rc2 = OpenSslNativeJna.ENGINE_set_default(rdrandEngine, ENGINE_METHOD_RAND);
+                    final int rc2 = OpenSslNativeJna.ENGINE_set_default(rdrandEngine, ENGINE_METHOD_RAND);
                     if(rc2 != 0) {
                         rdrandLoaded = true;
                     }
                 }
             }
 
-        } catch (Exception e) {
+        } catch (final Exception e) {
             throw new NoSuchAlgorithmException();
         }
 
@@ -96,7 +96,7 @@ class OpenSslJnaCryptoRandom extends Random implements CryptoRandom {
      * @param bytes the array to be filled in with random bytes.
      */
     @Override
-    public void nextBytes(byte[] bytes) {
+    public void nextBytes(final byte[] bytes) {
 
         synchronized (OpenSslJnaCryptoRandom.class) {
             //this method is synchronized for now
@@ -107,8 +107,8 @@ class OpenSslJnaCryptoRandom extends Random implements CryptoRandom {
                 throw new RuntimeException("rdrand should be used but default is detected");
             }
 
-            ByteBuffer buf = ByteBuffer.allocateDirect(bytes.length);
-            int retVal = OpenSslNativeJna.RAND_bytes(buf, bytes.length);
+            final ByteBuffer buf = ByteBuffer.allocateDirect(bytes.length);
+            final int retVal = OpenSslNativeJna.RAND_bytes(buf, bytes.length);
             throwOnError(retVal);
             buf.rewind();
             buf.get(bytes,0, bytes.length);
@@ -122,7 +122,7 @@ class OpenSslJnaCryptoRandom extends Random implements CryptoRandom {
      * @param seed the initial seed.
      */
     @Override
-    public void setSeed(long seed) {
+    public void setSeed(final long seed) {
         // Self-seeding.
     }
 
@@ -137,10 +137,10 @@ class OpenSslJnaCryptoRandom extends Random implements CryptoRandom {
      *         random bits (right justified, with leading zeros).
      */
     @Override
-    final protected int next(int numBits) {
+    final protected int next(final int numBits) {
         Utils.checkArgument(numBits >= 0 && numBits <= 32);
-        int numBytes = (numBits + 7) / 8;
-        byte b[] = new byte[numBytes];
+        final int numBytes = (numBits + 7) / 8;
+        final byte b[] = new byte[numBytes];
         int next = 0;
 
         nextBytes(b);
@@ -188,10 +188,10 @@ class OpenSslJnaCryptoRandom extends Random implements CryptoRandom {
     /**
      * @param retVal the result value of error.
      */
-    private void throwOnError(int retVal) {
+    private void throwOnError(final int retVal) {
         if (retVal != 1) {
-            NativeLong err = OpenSslNativeJna.ERR_peek_error();
-            String errdesc = OpenSslNativeJna.ERR_error_string(err, null);
+            final NativeLong err = OpenSslNativeJna.ERR_peek_error();
+            final String errdesc = OpenSslNativeJna.ERR_error_string(err, null);
             close();
             throw new RuntimeException("return code " + retVal + " from OpenSSL. Err code is " + err + ": " + errdesc);
         }
diff --git a/src/main/java/org/apache/commons/crypto/jna/OpenSslNativeJna.java b/src/main/java/org/apache/commons/crypto/jna/OpenSslNativeJna.java
index 26507d7..4680580 100644
--- a/src/main/java/org/apache/commons/crypto/jna/OpenSslNativeJna.java
+++ b/src/main/java/org/apache/commons/crypto/jna/OpenSslNativeJna.java
@@ -41,11 +41,11 @@ class OpenSslNativeJna {
     public static final long VERSION_1_1_X = 0x10100000;
 
     static {
-        NativeLibrary crypto = NativeLibrary.getInstance("crypto");
+        final NativeLibrary crypto = NativeLibrary.getInstance("crypto");
         Function version = null;
         try {
             version = crypto.getFunction("SSLeay");
-        } catch (UnsatisfiedLinkError e) {
+        } catch (final UnsatisfiedLinkError e) {
             // Swallow the Error.
         }
 
@@ -70,7 +70,7 @@ class OpenSslNativeJna {
         }
     }
 
-    public static PointerByReference ENGINE_by_id(String string) {
+    public static PointerByReference ENGINE_by_id(final String string) {
         if (VERSION == VERSION_1_1_X) {
             return OpenSsl11XNativeJna.ENGINE_by_id(string);
         } else {
@@ -78,7 +78,7 @@ class OpenSslNativeJna {
         }
     }
 
-    public static void ENGINE_finish(PointerByReference rdrandEngine) {
+    public static void ENGINE_finish(final PointerByReference rdrandEngine) {
         if (VERSION == VERSION_1_1_X) {
             OpenSsl11XNativeJna.ENGINE_finish(rdrandEngine);
         } else {
@@ -86,7 +86,7 @@ class OpenSslNativeJna {
         }
     }
 
-    public static void ENGINE_free(PointerByReference rdrandEngine) {
+    public static void ENGINE_free(final PointerByReference rdrandEngine) {
         if (VERSION == VERSION_1_1_X) {
             OpenSsl11XNativeJna.ENGINE_free(rdrandEngine);
         } else {
@@ -94,7 +94,7 @@ class OpenSslNativeJna {
         }
     }
 
-    public static int ENGINE_init(PointerByReference rdrandEngine) {
+    public static int ENGINE_init(final PointerByReference rdrandEngine) {
         if (VERSION == VERSION_1_1_X) {
             return OpenSsl11XNativeJna.ENGINE_init(rdrandEngine);
         } else {
@@ -102,7 +102,7 @@ class OpenSslNativeJna {
         }
     }
 
-    public static int ENGINE_set_default(PointerByReference rdrandEngine, int eNGINE_METHOD_RAND) {
+    public static int ENGINE_set_default(final PointerByReference rdrandEngine, final int eNGINE_METHOD_RAND) {
         if (VERSION == VERSION_1_1_X) {
             return OpenSsl11XNativeJna.ENGINE_set_default(rdrandEngine, eNGINE_METHOD_RAND);
         } else {
@@ -110,7 +110,7 @@ class OpenSslNativeJna {
         }
     }
 
-    public static String ERR_error_string(NativeLong err, Object object) {
+    public static String ERR_error_string(final NativeLong err, final Object object) {
         if (VERSION == VERSION_1_1_X) {
             return OpenSsl11XNativeJna.ERR_error_string(err, null);
         } else {
@@ -174,7 +174,7 @@ class OpenSslNativeJna {
         }
     }
 
-    public static void EVP_CIPHER_CTX_free(PointerByReference context) {
+    public static void EVP_CIPHER_CTX_free(final PointerByReference context) {
         if (VERSION == VERSION_1_1_X) {
             OpenSsl11XNativeJna.EVP_CIPHER_CTX_free(context);
         } else {
@@ -190,7 +190,7 @@ class OpenSslNativeJna {
         }
     }
 
-    public static void EVP_CIPHER_CTX_set_padding(PointerByReference context, int padding) {
+    public static void EVP_CIPHER_CTX_set_padding(final PointerByReference context, final int padding) {
         if (VERSION == VERSION_1_1_X) {
             OpenSsl11XNativeJna.EVP_CIPHER_CTX_set_padding(context, padding);
         } else {
@@ -198,8 +198,8 @@ class OpenSslNativeJna {
         }
     }
 
-    public static int EVP_CipherFinal_ex(PointerByReference context, ByteBuffer outBuffer,
-            int[] outlen) {
+    public static int EVP_CipherFinal_ex(final PointerByReference context, final ByteBuffer outBuffer,
+            final int[] outlen) {
         if (VERSION == VERSION_1_1_X) {
             return OpenSsl11XNativeJna.EVP_CipherFinal_ex(context, outBuffer, outlen);
         } else {
@@ -207,8 +207,8 @@ class OpenSslNativeJna {
         }
     }
 
-    public static int EVP_CipherInit_ex(PointerByReference context, PointerByReference algo,
-            Object object, byte[] encoded, byte[] iv, int cipherMode) {
+    public static int EVP_CipherInit_ex(final PointerByReference context, final PointerByReference algo,
+            final Object object, final byte[] encoded, final byte[] iv, final int cipherMode) {
         if (VERSION == VERSION_1_1_X) {
             return OpenSsl11XNativeJna.EVP_CipherInit_ex(context, algo, null, encoded, iv,
                     cipherMode);
@@ -218,8 +218,8 @@ class OpenSslNativeJna {
         }
     }
 
-    public static int EVP_CipherUpdate(PointerByReference context, ByteBuffer outBuffer,
-            int[] outlen, ByteBuffer inBuffer, int remaining) {
+    public static int EVP_CipherUpdate(final PointerByReference context, final ByteBuffer outBuffer,
+            final int[] outlen, final ByteBuffer inBuffer, final int remaining) {
         if (VERSION == VERSION_1_1_X) {
             return OpenSsl11XNativeJna.EVP_CipherUpdate(context, outBuffer, outlen, inBuffer,
                     remaining);
@@ -229,7 +229,7 @@ class OpenSslNativeJna {
         }
     }
 
-    public static int RAND_bytes(ByteBuffer buf, int length) {
+    public static int RAND_bytes(final ByteBuffer buf, final int length) {
         if (VERSION == VERSION_1_1_X) {
             return OpenSsl11XNativeJna.RAND_bytes(buf, length);
         } else {
@@ -253,7 +253,7 @@ class OpenSslNativeJna {
         }
     }
 
-    public static String OpenSSLVersion(int i) {
+    public static String OpenSSLVersion(final int i) {
         if (VERSION == VERSION_1_1_X) {
             return OpenSsl11XNativeJna.OpenSSL_version(i);
         } else {
@@ -277,7 +277,7 @@ class OpenSslNativeJna {
         }
     }
 
-    public static void EVP_CIPHER_CTX_cleanup(PointerByReference context) {
+    public static void EVP_CIPHER_CTX_cleanup(final PointerByReference context) {
         if (VERSION == VERSION_1_1_X) {
             return;
         } else {
diff --git a/src/main/java/org/apache/commons/crypto/random/CryptoRandomFactory.java b/src/main/java/org/apache/commons/crypto/random/CryptoRandomFactory.java
index 5e814ac..4b13755 100644
--- a/src/main/java/org/apache/commons/crypto/random/CryptoRandomFactory.java
+++ b/src/main/java/org/apache/commons/crypto/random/CryptoRandomFactory.java
@@ -120,7 +120,7 @@ public class CryptoRandomFactory {
          * The private constructor.
          * @param klass the Class of CryptoRandom
          */
-        private RandomProvider(Class<? extends CryptoRandom> klass) {
+        private RandomProvider(final Class<? extends CryptoRandom> klass) {
             this.klass = klass;
             this.className = klass.getName();
         }
@@ -166,7 +166,7 @@ public class CryptoRandomFactory {
      * @throws GeneralSecurityException if cannot create the {@link CryptoRandom} class
      */
     public static CryptoRandom getCryptoRandom() throws GeneralSecurityException {
-        Properties properties = new Properties();
+        final Properties properties = new Properties();
         return getCryptoRandom(properties);
     }
 
@@ -183,29 +183,29 @@ public class CryptoRandomFactory {
      * @throws GeneralSecurityException if cannot create the {@link CryptoRandom} class
      * @throws IllegalArgumentException if no classname(s) are provided
      */
-    public static CryptoRandom getCryptoRandom(Properties props)
+    public static CryptoRandom getCryptoRandom(final Properties props)
             throws GeneralSecurityException {
         final List<String> names = Utils.splitClassNames(getRandomClassString(props), ",");
         if (names.size() == 0) {
             throw new IllegalArgumentException("No classname(s) provided");
         }
-        StringBuilder errorMessage = new StringBuilder();
+        final StringBuilder errorMessage = new StringBuilder();
         CryptoRandom random = null;
         Exception lastException = null;
-        for (String klassName : names) {
+        for (final String klassName : names) {
             try {
                 final Class<?> klass = ReflectionUtils.getClassByName(klassName);
                 random = (CryptoRandom) ReflectionUtils.newInstance(klass, props);
                 if (random != null) {
                     break;
                 }
-            } catch (ClassCastException e) {
+            } catch (final ClassCastException e) {
                 lastException = e;
                 errorMessage.append("Class: [" + klassName + "] is not a CryptoRandom.");
-            } catch (ClassNotFoundException e) {
+            } catch (final ClassNotFoundException e) {
                 lastException = e;
                 errorMessage.append("CryptoRandom: [" + klassName + "] not found.");
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 lastException = e;
                 errorMessage.append("CryptoRandom: [" + klassName + "] failed with " + e.getMessage());
             }
@@ -224,7 +224,7 @@ public class CryptoRandomFactory {
      *        properties.
      * @return the CryptoRandom class based on the props.
      */
-    private static String getRandomClassString(Properties props) {
+    private static String getRandomClassString(final Properties props) {
         String randomClassString = props.getProperty(CryptoRandomFactory.CLASSES_KEY, CLASSES_DEFAULT);
         if (randomClassString.isEmpty()) { // TODO does it make sense to treat the empty string as the default?
             randomClassString = CLASSES_DEFAULT;
diff --git a/src/main/java/org/apache/commons/crypto/random/JavaCryptoRandom.java b/src/main/java/org/apache/commons/crypto/random/JavaCryptoRandom.java
index 1921bdb..b4e0844 100644
--- a/src/main/java/org/apache/commons/crypto/random/JavaCryptoRandom.java
+++ b/src/main/java/org/apache/commons/crypto/random/JavaCryptoRandom.java
@@ -41,14 +41,14 @@ class JavaCryptoRandom extends Random implements CryptoRandom {
      */
     // N.B. this class is not public/protected so does not appear in the main Javadoc
     // Please ensure that property use is documented in the enum CryptoRandomFactory.RandomProvider
-    public JavaCryptoRandom(Properties properties) {
+    public JavaCryptoRandom(final Properties properties) {
       try {
         instance = SecureRandom
                 .getInstance(properties
                         .getProperty(
                                 CryptoRandomFactory.JAVA_ALGORITHM_KEY,
                                 CryptoRandomFactory.JAVA_ALGORITHM_DEFAULT));
-      } catch (NoSuchAlgorithmException e) {
+      } catch (final NoSuchAlgorithmException e) {
         instance = new SecureRandom();
       }
     }
@@ -70,7 +70,7 @@ class JavaCryptoRandom extends Random implements CryptoRandom {
      * @param bytes the array to be filled in with random bytes.
      */
     @Override
-    public void nextBytes(byte[] bytes) {
+    public void nextBytes(final byte[] bytes) {
         instance.nextBytes(bytes);
     }
 }
diff --git a/src/main/java/org/apache/commons/crypto/random/OpenSslCryptoRandom.java b/src/main/java/org/apache/commons/crypto/random/OpenSslCryptoRandom.java
index 37cf79c..b59017c 100644
--- a/src/main/java/org/apache/commons/crypto/random/OpenSslCryptoRandom.java
+++ b/src/main/java/org/apache/commons/crypto/random/OpenSslCryptoRandom.java
@@ -55,9 +55,9 @@ class OpenSslCryptoRandom extends Random implements CryptoRandom {
             try {
                 OpenSslCryptoRandomNative.initSR();
                 opensslLoaded = true;
-            } catch (Exception t) {
+            } catch (final Exception t) {
                 except = t;
-            } catch (UnsatisfiedLinkError t) {
+            } catch (final UnsatisfiedLinkError t) {
                 except = t;
             }
         }
@@ -82,7 +82,7 @@ class OpenSslCryptoRandom extends Random implements CryptoRandom {
      */
     // N.B. this class is not public/protected so does not appear in the main Javadoc
     // Please ensure that property use is documented in the enum CryptoRandomFactory.RandomProvider
-    public OpenSslCryptoRandom(Properties props) throws GeneralSecurityException { // NOPMD
+    public OpenSslCryptoRandom(final Properties props) throws GeneralSecurityException { // NOPMD
         if (!nativeEnabled) {
             if (initException != null) {
                 throw new GeneralSecurityException("Native library could not be initialised", initException);
@@ -101,7 +101,7 @@ class OpenSslCryptoRandom extends Random implements CryptoRandom {
      * @param bytes the array to be filled in with random bytes.
      */
     @Override
-    public void nextBytes(byte[] bytes) {
+    public void nextBytes(final byte[] bytes) {
         // Constructor ensures that native is enabled here
         if (!OpenSslCryptoRandomNative.nextRandBytes(bytes)) {
             // Assume it's a problem with the argument, rather than an internal issue
@@ -116,7 +116,7 @@ class OpenSslCryptoRandom extends Random implements CryptoRandom {
      * @param seed the initial seed.
      */
     @Override
-    public void setSeed(long seed) {
+    public void setSeed(final long seed) {
         // Self-seeding.
     }
 
@@ -131,10 +131,10 @@ class OpenSslCryptoRandom extends Random implements CryptoRandom {
      *         random bits (right justified, with leading zeros).
      */
     @Override
-    final protected int next(int numBits) {
+    final protected int next(final int numBits) {
         Utils.checkArgument(numBits >= 0 && numBits <= 32);
-        int numBytes = (numBits + 7) / 8;
-        byte b[] = new byte[numBytes];
+        final int numBytes = (numBits + 7) / 8;
+        final byte b[] = new byte[numBytes];
         int next = 0;
 
         nextBytes(b);
diff --git a/src/main/java/org/apache/commons/crypto/random/OsCryptoRandom.java b/src/main/java/org/apache/commons/crypto/random/OsCryptoRandom.java
index 1d40bd2..2ca0eef 100644
--- a/src/main/java/org/apache/commons/crypto/random/OsCryptoRandom.java
+++ b/src/main/java/org/apache/commons/crypto/random/OsCryptoRandom.java
@@ -46,11 +46,11 @@ class OsCryptoRandom extends Random implements CryptoRandom {
      *
      * @param min the length.
      */
-    private void fillReservoir(int min) {
+    private void fillReservoir(final int min) {
         if (pos >= reservoir.length - min) {
             try {
                 IoUtils.readFully(stream, reservoir, 0, reservoir.length);
-            } catch (IOException e) {
+            } catch (final IOException e) {
                 throw new RuntimeException("failed to fill reservoir", e);
             }
             pos = 0;
@@ -67,21 +67,21 @@ class OsCryptoRandom extends Random implements CryptoRandom {
      */
     // N.B. this class is not public/protected so does not appear in the main Javadoc
     // Please ensure that property use is documented in the enum CryptoRandomFactory.RandomProvider
-    public OsCryptoRandom(Properties props) {
-        File randomDevFile = new File(
+    public OsCryptoRandom(final Properties props) {
+        final File randomDevFile = new File(
                 props.getProperty(CryptoRandomFactory.DEVICE_FILE_PATH_KEY,
                                   CryptoRandomFactory.DEVICE_FILE_PATH_DEFAULT));
 
         try {
             close();
             this.stream = new FileInputStream(randomDevFile);
-        } catch (IOException e) {
+        } catch (final IOException e) {
             throw new RuntimeException(e);
         }
 
         try {
             fillReservoir(0);
-        } catch (RuntimeException e) {
+        } catch (final RuntimeException e) {
             close();
             throw e;
         }
@@ -95,7 +95,7 @@ class OsCryptoRandom extends Random implements CryptoRandom {
      * @param bytes the array to be filled in with random bytes.
      */
     @Override
-    synchronized public void nextBytes(byte[] bytes) {
+    synchronized public void nextBytes(final byte[] bytes) {
         int off = 0;
         int n = 0;
         while (off < bytes.length) {
@@ -116,7 +116,7 @@ class OsCryptoRandom extends Random implements CryptoRandom {
      *         sequence.
      */
     @Override
-    synchronized protected int next(int nbits) {
+    synchronized protected int next(final int nbits) {
         fillReservoir(4);
         int n = 0;
         for (int i = 0; i < 4; i++) {
diff --git a/src/main/java/org/apache/commons/crypto/stream/CryptoInputStream.java b/src/main/java/org/apache/commons/crypto/stream/CryptoInputStream.java
index dba3903..fe2951e 100644
--- a/src/main/java/org/apache/commons/crypto/stream/CryptoInputStream.java
+++ b/src/main/java/org/apache/commons/crypto/stream/CryptoInputStream.java
@@ -115,9 +115,9 @@ public class CryptoInputStream extends InputStream implements
      * @param params the algorithm parameters.
      * @throws IOException if an I/O error occurs.
      */
-    public CryptoInputStream(String transformation,
-            Properties props, InputStream in, Key key,
-            AlgorithmParameterSpec params) throws IOException {
+    public CryptoInputStream(final String transformation,
+            final Properties props, final InputStream in, final Key key,
+            final AlgorithmParameterSpec params) throws IOException {
         this(in, Utils.getCipherInstance(transformation, props),
                 CryptoInputStream.getBufferSize(props), key, params);
     }
@@ -136,9 +136,9 @@ public class CryptoInputStream extends InputStream implements
      * @param params the algorithm parameters.
      * @throws IOException if an I/O error occurs.
      */
-    public CryptoInputStream(String transformation,
-            Properties props, ReadableByteChannel in, Key key,
-            AlgorithmParameterSpec params) throws IOException {
+    public CryptoInputStream(final String transformation,
+            final Properties props, final ReadableByteChannel in, final Key key,
+            final AlgorithmParameterSpec params) throws IOException {
         this(in, Utils.getCipherInstance(transformation, props), CryptoInputStream
                 .getBufferSize(props), key, params);
     }
@@ -153,8 +153,8 @@ public class CryptoInputStream extends InputStream implements
      * @param params the algorithm parameters.
      * @throws IOException if an I/O error occurs.
      */
-    protected CryptoInputStream(InputStream in, CryptoCipher cipher,
-            int bufferSize, Key key, AlgorithmParameterSpec params)
+    protected CryptoInputStream(final InputStream in, final CryptoCipher cipher,
+            final int bufferSize, final Key key, final AlgorithmParameterSpec params)
             throws IOException {
         this(new StreamInput(in, bufferSize), cipher, bufferSize, key, params);
     }
@@ -169,8 +169,8 @@ public class CryptoInputStream extends InputStream implements
      * @param params the algorithm parameters.
      * @throws IOException if an I/O error occurs.
      */
-    protected CryptoInputStream(ReadableByteChannel in, CryptoCipher cipher,
-            int bufferSize, Key key, AlgorithmParameterSpec params)
+    protected CryptoInputStream(final ReadableByteChannel in, final CryptoCipher cipher,
+            final int bufferSize, final Key key, final AlgorithmParameterSpec params)
             throws IOException {
         this(new ChannelInput(in), cipher, bufferSize, key, params);
     }
@@ -185,8 +185,8 @@ public class CryptoInputStream extends InputStream implements
      * @param params the algorithm parameters.
      * @throws IOException if an I/O error occurs.
      */
-    protected CryptoInputStream(Input input, CryptoCipher cipher, int bufferSize,
-            Key key, AlgorithmParameterSpec params) throws IOException {
+    protected CryptoInputStream(final Input input, final CryptoCipher cipher, final int bufferSize,
+            final Key key, final AlgorithmParameterSpec params) throws IOException {
         this.input = input;
         this.cipher = cipher;
         this.bufferSize = CryptoInputStream.checkBufferSize(cipher, bufferSize);
@@ -238,7 +238,7 @@ public class CryptoInputStream extends InputStream implements
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public int read(byte[] array, int off, int len) throws IOException {
+    public int read(final byte[] array, final int off, final int len) throws IOException {
         checkStream();
         Objects.requireNonNull(array, "array");
         if (off < 0 || len < 0 || len > array.length - off) {
@@ -247,10 +247,10 @@ public class CryptoInputStream extends InputStream implements
             return 0;
         }
 
-        int remaining = outBuffer.remaining();
+        final int remaining = outBuffer.remaining();
         if (remaining > 0) {
             // Satisfy the read with the existing data
-            int n = Math.min(len, remaining);
+            final int n = Math.min(len, remaining);
             outBuffer.get(array, off, n);
             return n;
         }
@@ -264,7 +264,7 @@ public class CryptoInputStream extends InputStream implements
             return nd;
         }
 
-        int n = Math.min(len, outBuffer.remaining());
+        final int n = Math.min(len, outBuffer.remaining());
         outBuffer.get(array, off, n);
         return n;
     }
@@ -278,7 +278,7 @@ public class CryptoInputStream extends InputStream implements
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public long skip(long n) throws IOException {
+    public long skip(final long n) throws IOException {
         Utils.checkArgument(n >= 0, "Negative skip length.");
         checkStream();
 
@@ -292,7 +292,7 @@ public class CryptoInputStream extends InputStream implements
         while (remaining > 0) {
             if (remaining <= outBuffer.remaining()) {
                 // Skip in the remaining buffer
-                int pos = outBuffer.position() + (int) remaining;
+                final int pos = outBuffer.position() + (int) remaining;
                 outBuffer.position(pos);
 
                 remaining = 0;
@@ -359,7 +359,7 @@ public class CryptoInputStream extends InputStream implements
      *        mark position becomes invalid.
      */
     @Override
-    public void mark(int readlimit) {
+    public void mark(final int readlimit) {
     }
 
     /**
@@ -405,7 +405,7 @@ public class CryptoInputStream extends InputStream implements
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public int read(ByteBuffer dst) throws IOException {
+    public int read(final ByteBuffer dst) throws IOException {
         checkStream();
         int remaining = outBuffer.remaining();
         if (remaining <= 0) {
@@ -488,9 +488,9 @@ public class CryptoInputStream extends InputStream implements
     protected void initCipher() throws IOException {
         try {
             cipher.init(Cipher.DECRYPT_MODE, key, params);
-        } catch (InvalidKeyException e) {
+        } catch (final InvalidKeyException e) {
             throw new IOException(e);
-        } catch (InvalidAlgorithmParameterException e) {
+        } catch (final InvalidAlgorithmParameterException e) {
             throw new IOException(e);
         }
     }
@@ -510,13 +510,13 @@ public class CryptoInputStream extends InputStream implements
             return -1;
         }
 
-        int n = input.read(inBuffer);
+        final int n = input.read(inBuffer);
         if (n < 0) {
             // The stream is end, finalize the cipher stream
             decryptFinal();
 
             // Satisfy the read with the remaining
-            int remaining = outBuffer.remaining();
+            final int remaining = outBuffer.remaining();
             if (remaining > 0) {
                 return remaining;
             }
@@ -546,7 +546,7 @@ public class CryptoInputStream extends InputStream implements
 
         try {
             cipher.update(inBuffer, outBuffer);
-        } catch (ShortBufferException e) {
+        } catch (final ShortBufferException e) {
             throw new IOException(e);
         }
 
@@ -568,11 +568,11 @@ public class CryptoInputStream extends InputStream implements
         try {
             cipher.doFinal(inBuffer, outBuffer);
             finalDone = true;
-        } catch (ShortBufferException e) {
+        } catch (final ShortBufferException e) {
             throw new IOException(e);
-        } catch (IllegalBlockSizeException e) {
+        } catch (final IllegalBlockSizeException e) {
             throw new IOException(e);
-        } catch (BadPaddingException e) {
+        } catch (final BadPaddingException e) {
             throw new IOException(e);
         }
 
@@ -603,26 +603,26 @@ public class CryptoInputStream extends InputStream implements
      *
      * @param buffer the bytebuffer to be freed.
      */
-    static void freeDirectBuffer(ByteBuffer buffer) {
+    static void freeDirectBuffer(final ByteBuffer buffer) {
         try {
             /* Using reflection to implement sun.nio.ch.DirectBuffer.cleaner()
             .clean(); */
             final String SUN_CLASS = "sun.nio.ch.DirectBuffer";
-            Class<?>[] interfaces = buffer.getClass().getInterfaces();
+            final Class<?>[] interfaces = buffer.getClass().getInterfaces();
 
-            for (Class<?> clazz : interfaces) {
+            for (final Class<?> clazz : interfaces) {
                 if (clazz.getName().equals(SUN_CLASS)) {
                     final Object[] NO_PARAM = new Object[0];
                     /* DirectBuffer#cleaner() */
-                    Method getCleaner = Class.forName(SUN_CLASS).getMethod("cleaner");
-                    Object cleaner = getCleaner.invoke(buffer, NO_PARAM);
+                    final Method getCleaner = Class.forName(SUN_CLASS).getMethod("cleaner");
+                    final Object cleaner = getCleaner.invoke(buffer, NO_PARAM);
                     /* Cleaner#clean() */
-                    Method cleanMethod = Class.forName("sun.misc.Cleaner").getMethod("clean");
+                    final Method cleanMethod = Class.forName("sun.misc.Cleaner").getMethod("clean");
                     cleanMethod.invoke(cleaner, NO_PARAM);
                     return;
                 }
             }
-        } catch (ReflectiveOperationException e) { // NOPMD
+        } catch (final ReflectiveOperationException e) { // NOPMD
             // Ignore the Reflection exception.
         }
     }
@@ -634,8 +634,8 @@ public class CryptoInputStream extends InputStream implements
      *        properties.
      * @return the buffer size.
      * */
-    static int getBufferSize(Properties props) {
-        String bufferSizeStr = props.getProperty(CryptoInputStream.STREAM_BUFFER_SIZE_KEY);
+    static int getBufferSize(final Properties props) {
+        final String bufferSizeStr = props.getProperty(CryptoInputStream.STREAM_BUFFER_SIZE_KEY);
         if (bufferSizeStr == null || bufferSizeStr.isEmpty()) {
             return CryptoInputStream.STREAM_BUFFER_SIZE_DEFAULT;
         }
@@ -648,7 +648,7 @@ public class CryptoInputStream extends InputStream implements
      * @param cipher the {@link CryptoCipher} instance.
      * @throws IOException if an I/O error occurs.
      */
-    static void checkStreamCipher(CryptoCipher cipher)
+    static void checkStreamCipher(final CryptoCipher cipher)
             throws IOException {
         if (!cipher.getAlgorithm().equals("AES/CTR/NoPadding")) {
             throw new IOException("AES/CTR/NoPadding is required");
@@ -662,7 +662,7 @@ public class CryptoInputStream extends InputStream implements
      * @param bufferSize the buffer size.
      * @return the remaining buffer size.
      */
-    static int checkBufferSize(CryptoCipher cipher, int bufferSize) {
+    static int checkBufferSize(final CryptoCipher cipher, final int bufferSize) {
         Utils.checkArgument(bufferSize >= CryptoInputStream.MIN_BUFFER_SIZE,
                 "Minimum value of buffer size is " + CryptoInputStream.MIN_BUFFER_SIZE + ".");
         return bufferSize - bufferSize
diff --git a/src/main/java/org/apache/commons/crypto/stream/CryptoOutputStream.java b/src/main/java/org/apache/commons/crypto/stream/CryptoOutputStream.java
index 273637c..47c2207 100644
--- a/src/main/java/org/apache/commons/crypto/stream/CryptoOutputStream.java
+++ b/src/main/java/org/apache/commons/crypto/stream/CryptoOutputStream.java
@@ -99,9 +99,9 @@ public class CryptoOutputStream extends OutputStream implements
      * @throws IOException if an I/O error occurs.
      */
 
-    public CryptoOutputStream(String transformation,
-            Properties props, OutputStream out, Key key,
-            AlgorithmParameterSpec params) throws IOException {
+    public CryptoOutputStream(final String transformation,
+            final Properties props, final OutputStream out, final Key key,
+            final AlgorithmParameterSpec params) throws IOException {
         this(out, Utils.getCipherInstance(transformation, props),
                 CryptoInputStream.getBufferSize(props), key, params);
 
@@ -121,9 +121,9 @@ public class CryptoOutputStream extends OutputStream implements
      * @param params the algorithm parameters.
      * @throws IOException if an I/O error occurs.
      */
-    public CryptoOutputStream(String transformation,
-            Properties props, WritableByteChannel out, Key key,
-            AlgorithmParameterSpec params) throws IOException {
+    public CryptoOutputStream(final String transformation,
+            final Properties props, final WritableByteChannel out, final Key key,
+            final AlgorithmParameterSpec params) throws IOException {
         this(out, Utils.getCipherInstance(transformation, props), CryptoInputStream
                 .getBufferSize(props), key, params);
 
@@ -139,8 +139,8 @@ public class CryptoOutputStream extends OutputStream implements
      * @param params the algorithm parameters.
      * @throws IOException if an I/O error occurs.
      */
-    protected CryptoOutputStream(OutputStream out, CryptoCipher cipher,
-            int bufferSize, Key key, AlgorithmParameterSpec params)
+    protected CryptoOutputStream(final OutputStream out, final CryptoCipher cipher,
+            final int bufferSize, final Key key, final AlgorithmParameterSpec params)
             throws IOException {
         this(new StreamOutput(out, bufferSize), cipher, bufferSize, key, params);
     }
@@ -155,8 +155,8 @@ public class CryptoOutputStream extends OutputStream implements
      * @param params the algorithm parameters.
      * @throws IOException if an I/O error occurs.
      */
-    protected CryptoOutputStream(WritableByteChannel channel, CryptoCipher cipher,
-            int bufferSize, Key key, AlgorithmParameterSpec params)
+    protected CryptoOutputStream(final WritableByteChannel channel, final CryptoCipher cipher,
+            final int bufferSize, final Key key, final AlgorithmParameterSpec params)
             throws IOException {
         this(new ChannelOutput(channel), cipher, bufferSize, key, params);
     }
@@ -171,8 +171,8 @@ public class CryptoOutputStream extends OutputStream implements
      * @param params the algorithm parameters.
      * @throws IOException if an I/O error occurs.
      */
-    protected CryptoOutputStream(Output output, CryptoCipher cipher,
-            int bufferSize, Key key, AlgorithmParameterSpec params)
+    protected CryptoOutputStream(final Output output, final CryptoCipher cipher,
+            final int bufferSize, final Key key, final AlgorithmParameterSpec params)
             throws IOException {
 
         this.output = output;
@@ -203,7 +203,7 @@ public class CryptoOutputStream extends OutputStream implements
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public void write(int b) throws IOException {
+    public void write(final int b) throws IOException {
         oneByteBuf[0] = (byte) (b & 0xff);
         write(oneByteBuf, 0, oneByteBuf.length);
     }
@@ -220,7 +220,7 @@ public class CryptoOutputStream extends OutputStream implements
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public void write(byte[] array, int off, int len) throws IOException {
+    public void write(final byte[] array, int off, int len) throws IOException {
         checkStream();
         Objects.requireNonNull(array, "array");
         if (off < 0 || len < 0 || off > array.length || len > array.length - off) {
@@ -300,7 +300,7 @@ public class CryptoOutputStream extends OutputStream implements
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public int write(ByteBuffer src) throws IOException {
+    public int write(final ByteBuffer src) throws IOException {
         checkStream();
         final int len = src.remaining();
         int remaining = len;
@@ -336,9 +336,9 @@ public class CryptoOutputStream extends OutputStream implements
     protected void initCipher() throws IOException {
         try {
             cipher.init(Cipher.ENCRYPT_MODE, key, params);
-        } catch (InvalidKeyException e) {
+        } catch (final InvalidKeyException e) {
             throw new IOException(e);
-        } catch (InvalidAlgorithmParameterException e) {
+        } catch (final InvalidAlgorithmParameterException e) {
             throw new IOException(e);
         }
     }
@@ -356,7 +356,7 @@ public class CryptoOutputStream extends OutputStream implements
 
         try {
             cipher.update(inBuffer, outBuffer);
-        } catch (ShortBufferException e) {
+        } catch (final ShortBufferException e) {
             throw new IOException(e);
         }
 
@@ -380,11 +380,11 @@ public class CryptoOutputStream extends OutputStream implements
 
         try {
             cipher.doFinal(inBuffer, outBuffer);
-        } catch (ShortBufferException e) {
+        } catch (final ShortBufferException e) {
             throw new IOException(e);
-        } catch (IllegalBlockSizeException e) {
+        } catch (final IllegalBlockSizeException e) {
             throw new IOException(e);
-        } catch (BadPaddingException e) {
+        } catch (final BadPaddingException e) {
             throw new IOException(e);
         }
 
diff --git a/src/main/java/org/apache/commons/crypto/stream/CtrCryptoInputStream.java b/src/main/java/org/apache/commons/crypto/stream/CtrCryptoInputStream.java
index ce40c23..5b1f4ba 100644
--- a/src/main/java/org/apache/commons/crypto/stream/CtrCryptoInputStream.java
+++ b/src/main/java/org/apache/commons/crypto/stream/CtrCryptoInputStream.java
@@ -66,7 +66,7 @@ public class CtrCryptoInputStream extends CryptoInputStream {
     /**
      * Initialization vector for the cipher.
      */
-    private byte[] iv;
+    private final byte[] iv;
 
     /**
      * Padding = pos%(algorithm blocksize); Padding is put into
@@ -90,8 +90,8 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param iv Initialization vector for the cipher.
      * @throws IOException if an I/O error occurs.
      */
-    public CtrCryptoInputStream(Properties props, InputStream in, byte[] key,
-            byte[] iv) throws IOException {
+    public CtrCryptoInputStream(final Properties props, final InputStream in, final byte[] key,
+            final byte[] iv) throws IOException {
         this(props, in, key, iv, 0);
     }
 
@@ -105,8 +105,8 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param iv Initialization vector for the cipher.
      * @throws IOException if an I/O error occurs.
      */
-    public CtrCryptoInputStream(Properties props, ReadableByteChannel in,
-            byte[] key, byte[] iv) throws IOException {
+    public CtrCryptoInputStream(final Properties props, final ReadableByteChannel in,
+            final byte[] key, final byte[] iv) throws IOException {
         this(props, in, key, iv, 0);
     }
 
@@ -120,8 +120,8 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param iv Initialization vector for the cipher.
      * @throws IOException if an I/O error occurs.
      */
-    protected CtrCryptoInputStream(InputStream in, CryptoCipher cipher,
-            int bufferSize, byte[] key, byte[] iv) throws IOException {
+    protected CtrCryptoInputStream(final InputStream in, final CryptoCipher cipher,
+            final int bufferSize, final byte[] key, final byte[] iv) throws IOException {
         this(in, cipher, bufferSize, key, iv, 0);
     }
 
@@ -135,8 +135,8 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param iv Initialization vector for the cipher.
      * @throws IOException if an I/O error occurs.
      */
-    protected CtrCryptoInputStream(ReadableByteChannel in, CryptoCipher cipher,
-            int bufferSize, byte[] key, byte[] iv) throws IOException {
+    protected CtrCryptoInputStream(final ReadableByteChannel in, final CryptoCipher cipher,
+            final int bufferSize, final byte[] key, final byte[] iv) throws IOException {
         this(in, cipher, bufferSize, key, iv, 0);
     }
 
@@ -150,8 +150,8 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param iv Initialization vector for the cipher.
      * @throws IOException if an I/O error occurs.
      */
-    protected CtrCryptoInputStream(Input input, CryptoCipher cipher,
-            int bufferSize, byte[] key, byte[] iv) throws IOException {
+    protected CtrCryptoInputStream(final Input input, final CryptoCipher cipher,
+            final int bufferSize, final byte[] key, final byte[] iv) throws IOException {
         this(input, cipher, bufferSize, key, iv, 0);
     }
 
@@ -166,8 +166,8 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param streamOffset the start offset in the stream.
      * @throws IOException if an I/O error occurs.
      */
-    public CtrCryptoInputStream(Properties props, InputStream in, byte[] key,
-            byte[] iv, long streamOffset) throws IOException {
+    public CtrCryptoInputStream(final Properties props, final InputStream in, final byte[] key,
+            final byte[] iv, final long streamOffset) throws IOException {
         this(in, Utils.getCipherInstance(
                 "AES/CTR/NoPadding", props),
                 CryptoInputStream.getBufferSize(props), key, iv, streamOffset);
@@ -184,8 +184,8 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param streamOffset the start offset in the stream.
      * @throws IOException if an I/O error occurs.
      */
-    public CtrCryptoInputStream(Properties props, ReadableByteChannel in,
-            byte[] key, byte[] iv, long streamOffset) throws IOException {
+    public CtrCryptoInputStream(final Properties props, final ReadableByteChannel in,
+            final byte[] key, final byte[] iv, final long streamOffset) throws IOException {
         this(in, Utils.getCipherInstance(
                 "AES/CTR/NoPadding", props),
                 CryptoInputStream.getBufferSize(props), key, iv, streamOffset);
@@ -202,8 +202,8 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param streamOffset the start offset in the stream.
      * @throws IOException if an I/O error occurs.
      */
-    protected CtrCryptoInputStream(InputStream in, CryptoCipher cipher,
-            int bufferSize, byte[] key, byte[] iv, long streamOffset)
+    protected CtrCryptoInputStream(final InputStream in, final CryptoCipher cipher,
+            final int bufferSize, final byte[] key, final byte[] iv, final long streamOffset)
             throws IOException {
         this(new StreamInput(in, bufferSize), cipher, bufferSize, key, iv,
                 streamOffset);
@@ -220,8 +220,8 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param streamOffset the start offset in the stream.
      * @throws IOException if an I/O error occurs.
      */
-    protected CtrCryptoInputStream(ReadableByteChannel in, CryptoCipher cipher,
-            int bufferSize, byte[] key, byte[] iv, long streamOffset)
+    protected CtrCryptoInputStream(final ReadableByteChannel in, final CryptoCipher cipher,
+            final int bufferSize, final byte[] key, final byte[] iv, final long streamOffset)
             throws IOException {
         this(new ChannelInput(in), cipher, bufferSize, key, iv, streamOffset);
     }
@@ -237,8 +237,8 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param streamOffset the start offset in the stream.
      * @throws IOException if an I/O error occurs.
      */
-    protected CtrCryptoInputStream(Input input, CryptoCipher cipher,
-            int bufferSize, byte[] key, byte[] iv, long streamOffset)
+    protected CtrCryptoInputStream(final Input input, final CryptoCipher cipher,
+            final int bufferSize, final byte[] key, final byte[] iv, final long streamOffset)
             throws IOException {
         super(input, cipher, bufferSize, new SecretKeySpec(key, "AES"),
                 new IvParameterSpec(iv));
@@ -267,7 +267,7 @@ public class CtrCryptoInputStream extends CryptoInputStream {
         if (n == 0) {
             return 0;
         } else if (n <= outBuffer.remaining()) {
-            int pos = outBuffer.position() + (int) n;
+            final int pos = outBuffer.position() + (int) n;
             outBuffer.position(pos);
             return n;
         } else {
@@ -282,7 +282,7 @@ public class CtrCryptoInputStream extends CryptoInputStream {
             if (skipped < 0) {
                 skipped = 0;
             }
-            long pos = streamOffset + skipped;
+            final long pos = streamOffset + skipped;
             skipped += outBuffer.remaining();
             resetStreamOffset(pos);
             return skipped;
@@ -299,7 +299,7 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public int read(ByteBuffer buf) throws IOException {
+    public int read(final ByteBuffer buf) throws IOException {
         checkStream();
         int unread = outBuffer.remaining();
         if (unread <= 0) { // Fill the unread decrypted data buffer firstly
@@ -342,7 +342,7 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param position the given position in the data.
      * @throws IOException if an I/O error occurs.
      */
-    public void seek(long position) throws IOException {
+    public void seek(final long position) throws IOException {
         Utils.checkArgument(position >= 0, "Cannot seek to negative offset.");
         checkStream();
         /*
@@ -350,7 +350,7 @@ public class CtrCryptoInputStream extends CryptoInputStream {
          * and decrypted in outBuffer, we just need to re-position outBuffer.
          */
         if (position >= getStreamPosition() && position <= getStreamOffset()) {
-            int forward = (int) (position - getStreamPosition());
+            final int forward = (int) (position - getStreamPosition());
             if (forward > 0) {
                 outBuffer.position(outBuffer.position() + forward);
             }
@@ -374,7 +374,7 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      *
      * @param streamOffset the stream offset.
      */
-    protected void setStreamOffset(long streamOffset) {
+    protected void setStreamOffset(final long streamOffset) {
         this.streamOffset = streamOffset;
     }
 
@@ -396,7 +396,7 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      */
     @Override
     protected int decryptMore() throws IOException {
-        int n = input.read(inBuffer);
+        final int n = input.read(inBuffer);
         if (n <= 0) {
             return n;
         }
@@ -447,7 +447,7 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param buf The buffer into which bytes are to be transferred.
      * @throws IOException if an I/O error occurs.
      */
-    protected void decryptInPlace(ByteBuffer buf) throws IOException {
+    protected void decryptInPlace(final ByteBuffer buf) throws IOException {
         Utils.checkState(inBuffer.position() >= padding);
         Utils.checkState(buf.isDirect());
         Utils.checkState(buf.remaining() >= inBuffer.position());
@@ -472,7 +472,7 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param len the maximum number of decrypted data bytes to read.
      * @throws IOException if an I/O error occurs.
      */
-    protected void decrypt(ByteBuffer buf, int offset, int len)
+    protected void decrypt(final ByteBuffer buf, final int offset, final int len)
             throws IOException {
         final int pos = buf.position();
         final int limit = buf.limit();
@@ -503,7 +503,7 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @return the byte.
      * @throws IOException if an I/O error occurs.
      */
-    protected byte postDecryption(long position) throws IOException {
+    protected byte postDecryption(final long position) throws IOException {
         byte padding = 0;
         if (cipherReset) {
             /*
@@ -534,7 +534,7 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param position the given position in the data.
      * @return the counter for input stream position.
      */
-    protected long getCounter(long position) {
+    protected long getCounter(final long position) {
         return position / cipher.getBlockSize();
     }
 
@@ -544,7 +544,7 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param position the given position in the data.
      * @return the padding for input stream position.
      */
-    protected byte getPadding(long position) {
+    protected byte getPadding(final long position) {
         return (byte) (position % cipher.getBlockSize());
     }
 
@@ -564,14 +564,14 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param position the given position in the data.
      * @throws IOException if an I/O error occurs.
      */
-    protected void resetCipher(long position) throws IOException {
+    protected void resetCipher(final long position) throws IOException {
         final long counter = getCounter(position);
         CtrCryptoInputStream.calculateIV(initIV, counter, iv);
         try {
             cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv));
-        } catch (InvalidKeyException e) {
+        } catch (final InvalidKeyException e) {
             throw new IOException(e);
-        } catch (InvalidAlgorithmParameterException e) {
+        } catch (final InvalidAlgorithmParameterException e) {
             throw new IOException(e);
         }
         cipherReset = false;
@@ -584,7 +584,7 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param offset the offset of the stream.
      * @throws IOException if an I/O error occurs.
      */
-    protected void resetStreamOffset(long offset) throws IOException {
+    protected void resetStreamOffset(final long offset) throws IOException {
         streamOffset = offset;
         inBuffer.clear();
         outBuffer.clear();
@@ -600,10 +600,10 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param out the output ByteBuffer.
      * @throws IOException if an I/O error occurs.
      */
-    protected void decryptBuffer(ByteBuffer out) throws IOException {
-        int inputSize = inBuffer.remaining();
+    protected void decryptBuffer(final ByteBuffer out) throws IOException {
+        final int inputSize = inBuffer.remaining();
         try {
-            int n = cipher.update(inBuffer, out);
+            final int n = cipher.update(inBuffer, out);
             if (n < inputSize) {
                 /**
                  * Typically code will not get here. CryptoCipher#update will
@@ -613,11 +613,11 @@ public class CtrCryptoInputStream extends CryptoInputStream {
                 cipher.doFinal(inBuffer, out);
                 cipherReset = true;
             }
-        } catch (ShortBufferException e) {
+        } catch (final ShortBufferException e) {
             throw new IOException(e);
-        } catch (IllegalBlockSizeException e) {
+        } catch (final IllegalBlockSizeException e) {
             throw new IOException(e);
-        } catch (BadPaddingException e) {
+        } catch (final BadPaddingException e) {
             throw new IOException(e);
         }
     }
@@ -645,7 +645,7 @@ public class CtrCryptoInputStream extends CryptoInputStream {
      * @param counter counter for input stream position
      * @param IV the IV for input stream position
      */
-    static void calculateIV(byte[] initIV, long counter, byte[] IV) {
+    static void calculateIV(final byte[] initIV, long counter, final byte[] IV) {
         Utils.checkArgument(initIV.length == CryptoCipherFactory.AES_BLOCK_SIZE);
         Utils.checkArgument(IV.length == CryptoCipherFactory.AES_BLOCK_SIZE);
 
diff --git a/src/main/java/org/apache/commons/crypto/stream/CtrCryptoOutputStream.java b/src/main/java/org/apache/commons/crypto/stream/CtrCryptoOutputStream.java
index ff5089d..fbc27e5 100644
--- a/src/main/java/org/apache/commons/crypto/stream/CtrCryptoOutputStream.java
+++ b/src/main/java/org/apache/commons/crypto/stream/CtrCryptoOutputStream.java
@@ -70,7 +70,7 @@ public class CtrCryptoOutputStream extends CryptoOutputStream {
     /**
      * Initialization vector for the cipher.
      */
-    private byte[] iv;
+    private final byte[] iv;
 
     /**
      * Padding = pos%(algorithm blocksize); Padding is put into
@@ -94,8 +94,8 @@ public class CtrCryptoOutputStream extends CryptoOutputStream {
      * @param iv Initialization vector for the cipher.
      * @throws IOException if an I/O error occurs.
      */
-    public CtrCryptoOutputStream(Properties props, OutputStream out,
-            byte[] key, byte[] iv) throws IOException {
+    public CtrCryptoOutputStream(final Properties props, final OutputStream out,
+            final byte[] key, final byte[] iv) throws IOException {
         this(props, out, key, iv, 0);
     }
 
@@ -109,8 +109,8 @@ public class CtrCryptoOutputStream extends CryptoOutputStream {
      * @param iv Initialization vector for the cipher.
      * @throws IOException if an I/O error occurs.
      */
-    public CtrCryptoOutputStream(Properties props, WritableByteChannel out,
-            byte[] key, byte[] iv) throws IOException {
+    public CtrCryptoOutputStream(final Properties props, final WritableByteChannel out,
+            final byte[] key, final byte[] iv) throws IOException {
         this(props, out, key, iv, 0);
     }
 
@@ -124,8 +124,8 @@ public class CtrCryptoOutputStream extends CryptoOutputStream {
      * @param iv Initialization vector for the cipher.
      * @throws IOException if an I/O error occurs.
      */
-    protected CtrCryptoOutputStream(OutputStream out, CryptoCipher cipher,
-            int bufferSize, byte[] key, byte[] iv) throws IOException {
+    protected CtrCryptoOutputStream(final OutputStream out, final CryptoCipher cipher,
+            final int bufferSize, final byte[] key, final byte[] iv) throws IOException {
         this(out, cipher, bufferSize, key, iv, 0);
     }
 
@@ -139,8 +139,8 @@ public class CtrCryptoOutputStream extends CryptoOutputStream {
      * @param iv Initialization vector for the cipher.
      * @throws IOException if an I/O error occurs.
      */
-    protected CtrCryptoOutputStream(WritableByteChannel channel,
-            CryptoCipher cipher, int bufferSize, byte[] key, byte[] iv)
+    protected CtrCryptoOutputStream(final WritableByteChannel channel,
+            final CryptoCipher cipher, final int bufferSize, final byte[] key, final byte[] iv)
             throws IOException {
         this(channel, cipher, bufferSize, key, iv, 0);
     }
@@ -155,8 +155,8 @@ public class CtrCryptoOutputStream extends CryptoOutputStream {
      * @param iv Initialization vector for the cipher.
      * @throws IOException if an I/O error occurs.
      */
-    protected CtrCryptoOutputStream(Output output, CryptoCipher cipher,
-            int bufferSize, byte[] key, byte[] iv) throws IOException {
+    protected CtrCryptoOutputStream(final Output output, final CryptoCipher cipher,
+            final int bufferSize, final byte[] key, final byte[] iv) throws IOException {
         this(output, cipher, bufferSize, key, iv, 0);
     }
 
@@ -171,8 +171,8 @@ public class CtrCryptoOutputStream extends CryptoOutputStream {
      * @param streamOffset the start offset in the data.
      * @throws IOException if an I/O error occurs.
      */
-    public CtrCryptoOutputStream(Properties props, OutputStream out,
-            byte[] key, byte[] iv, long streamOffset) throws IOException {
+    public CtrCryptoOutputStream(final Properties props, final OutputStream out,
+            final byte[] key, final byte[] iv, final long streamOffset) throws IOException {
         this(out, Utils.getCipherInstance(
                 "AES/CTR/NoPadding", props),
                 CryptoInputStream.getBufferSize(props), key, iv, streamOffset);
@@ -189,8 +189,8 @@ public class CtrCryptoOutputStream extends CryptoOutputStream {
      * @param streamOffset the start offset in the data.
      * @throws IOException if an I/O error occurs.
      */
-    public CtrCryptoOutputStream(Properties props, WritableByteChannel out,
-            byte[] key, byte[] iv, long streamOffset) throws IOException {
+    public CtrCryptoOutputStream(final Properties props, final WritableByteChannel out,
+            final byte[] key, final byte[] iv, final long streamOffset) throws IOException {
         this(out, Utils.getCipherInstance(
                 "AES/CTR/NoPadding", props),
                 CryptoInputStream.getBufferSize(props), key, iv, streamOffset);
@@ -207,8 +207,8 @@ public class CtrCryptoOutputStream extends CryptoOutputStream {
      * @param streamOffset the start offset in the data.
      * @throws IOException if an I/O error occurs.
      */
-    protected CtrCryptoOutputStream(OutputStream out, CryptoCipher cipher,
-            int bufferSize, byte[] key, byte[] iv, long streamOffset)
+    protected CtrCryptoOutputStream(final OutputStream out, final CryptoCipher cipher,
+            final int bufferSize, final byte[] key, final byte[] iv, final long streamOffset)
             throws IOException {
         this(new StreamOutput(out, bufferSize), cipher, bufferSize, key, iv,
                 streamOffset);
@@ -225,9 +225,9 @@ public class CtrCryptoOutputStream extends CryptoOutputStream {
      * @param streamOffset the start offset in the data.
      * @throws IOException if an I/O error occurs.
      */
-    protected CtrCryptoOutputStream(WritableByteChannel channel,
-            CryptoCipher cipher, int bufferSize, byte[] key, byte[] iv,
-            long streamOffset) throws IOException {
+    protected CtrCryptoOutputStream(final WritableByteChannel channel,
+            final CryptoCipher cipher, final int bufferSize, final byte[] key, final byte[] iv,
+            final long streamOffset) throws IOException {
         this(new ChannelOutput(channel), cipher, bufferSize, key, iv,
                 streamOffset);
     }
@@ -243,8 +243,8 @@ public class CtrCryptoOutputStream extends CryptoOutputStream {
      * @param streamOffset the start offset in the data.
      * @throws IOException if an I/O error occurs.
      */
-    protected CtrCryptoOutputStream(Output output, CryptoCipher cipher,
-            int bufferSize, byte[] key, byte[] iv, long streamOffset)
+    protected CtrCryptoOutputStream(final Output output, final CryptoCipher cipher,
+            final int bufferSize, final byte[] key, final byte[] iv, final long streamOffset)
             throws IOException {
         super(output, cipher, bufferSize, new SecretKeySpec(key, "AES"),
                 new IvParameterSpec(iv));
@@ -334,9 +334,9 @@ public class CtrCryptoOutputStream extends CryptoOutputStream {
         CtrCryptoInputStream.calculateIV(initIV, counter, iv);
         try {
             cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv));
-        } catch (InvalidKeyException e) {
+        } catch (final InvalidKeyException e) {
             throw new IOException(e);
-        } catch (InvalidAlgorithmParameterException e) {
+        } catch (final InvalidAlgorithmParameterException e) {
             throw new IOException(e);
         }
         cipherReset = false;
@@ -348,10 +348,10 @@ public class CtrCryptoOutputStream extends CryptoOutputStream {
      * @param out the output ByteBuffer.
      * @throws IOException if an I/O error occurs.
      */
-    private void encryptBuffer(ByteBuffer out) throws IOException {
-        int inputSize = inBuffer.remaining();
+    private void encryptBuffer(final ByteBuffer out) throws IOException {
+        final int inputSize = inBuffer.remaining();
         try {
-            int n = cipher.update(inBuffer, out);
+            final int n = cipher.update(inBuffer, out);
             if (n < inputSize) {
                 /**
                  * Typically code will not get here. CryptoCipher#update will
@@ -361,11 +361,11 @@ public class CtrCryptoOutputStream extends CryptoOutputStream {
                 cipher.doFinal(inBuffer, out);
                 cipherReset = true;
             }
-        } catch (ShortBufferException e) {
+        } catch (final ShortBufferException e) {
             throw new IOException(e);
-        } catch (BadPaddingException e) {
+        } catch (final BadPaddingException e) {
             throw new IOException(e);
-        } catch (IllegalBlockSizeException e) {
+        } catch (final IllegalBlockSizeException e) {
             throw new IOException(e);
         }
     }
@@ -384,7 +384,7 @@ public class CtrCryptoOutputStream extends CryptoOutputStream {
      *
      * @param streamOffset the underlying stream offset
      */
-    protected void setStreamOffset(long streamOffset) {
+    protected void setStreamOffset(final long streamOffset) {
         this.streamOffset = streamOffset;
     }
 }
diff --git a/src/main/java/org/apache/commons/crypto/stream/PositionedCryptoInputStream.java b/src/main/java/org/apache/commons/crypto/stream/PositionedCryptoInputStream.java
index 172db49..45749f3 100644
--- a/src/main/java/org/apache/commons/crypto/stream/PositionedCryptoInputStream.java
+++ b/src/main/java/org/apache/commons/crypto/stream/PositionedCryptoInputStream.java
@@ -70,8 +70,8 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
      * @param streamOffset the start offset in the data.
      * @throws IOException if an I/O error occurs.
      */
-    public PositionedCryptoInputStream(Properties props, Input in, byte[] key,
-            byte[] iv, long streamOffset) throws IOException {
+    public PositionedCryptoInputStream(final Properties props, final Input in, final byte[] key,
+            final byte[] iv, final long streamOffset) throws IOException {
         this(props, in, Utils.getCipherInstance("AES/CTR/NoPadding", props),
                 CryptoInputStream.getBufferSize(props), key, iv, streamOffset);
     }
@@ -88,8 +88,8 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
      * @param streamOffset the start offset in the data.
      * @throws IOException if an I/O error occurs.
      */
-    protected PositionedCryptoInputStream(Properties props, Input input, CryptoCipher cipher,
-            int bufferSize, byte[] key, byte[] iv, long streamOffset)
+    protected PositionedCryptoInputStream(final Properties props, final Input input, final CryptoCipher cipher,
+            final int bufferSize, final byte[] key, final byte[] iv, final long streamOffset)
             throws IOException {
         super(input, cipher, bufferSize, key, iv, streamOffset);
         this.props = props;
@@ -108,7 +108,7 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
      * @return int the total number of decrypted data bytes read into the
      *         buffer.
      */
-    public int read(long position, byte[] buffer, int offset, int length)
+    public int read(final long position, final byte[] buffer, final int offset, final int length)
             throws IOException {
         checkStream();
         final int n = input.read(position, buffer, offset, length);
@@ -130,7 +130,7 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
      * @param position the offset from the start of the stream.
      * @throws IOException if an I/O error occurs.
      */
-    public void readFully(long position, byte[] buffer, int offset, int length)
+    public void readFully(final long position, final byte[] buffer, final int offset, final int length)
             throws IOException {
         checkStream();
         IoUtils.readFully(input, position, buffer, offset, length);
@@ -149,7 +149,7 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
      * @param buffer the buffer into which the data is read.
      * @throws IOException if an I/O error occurs.
      */
-    public void readFully(long position, byte[] buffer) throws IOException {
+    public void readFully(final long position, final byte[] buffer) throws IOException {
         readFully(position, buffer, 0, buffer.length);
     }
 
@@ -163,21 +163,21 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
      * @param length the maximum number of bytes to read.
      * @throws IOException if an I/O error occurs.
      */
-    protected void decrypt(long position, byte[] buffer, int offset, int length)
+    protected void decrypt(final long position, final byte[] buffer, final int offset, final int length)
             throws IOException {
-        ByteBuffer inByteBuffer = getBuffer();
-        ByteBuffer outByteBuffer = getBuffer();
+        final ByteBuffer inByteBuffer = getBuffer();
+        final ByteBuffer outByteBuffer = getBuffer();
         CipherState state = null;
         try {
             state = getCipherState();
-            byte[] iv = getInitIV().clone();
+            final byte[] iv = getInitIV().clone();
             resetCipher(state, position, iv);
             byte padding = getPadding(position);
             inByteBuffer.position(padding); // Set proper position for input data.
 
             int n = 0;
             while (n < length) {
-                int toDecrypt = Math.min(length - n, inByteBuffer.remaining());
+                final int toDecrypt = Math.min(length - n, inByteBuffer.remaining());
                 inByteBuffer.put(buffer, offset + n, toDecrypt);
 
                 // Do decryption
@@ -205,8 +205,8 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
      * @param padding the padding.
      * @throws IOException if an I/O error occurs.
      */
-    private void decrypt(CipherState state, ByteBuffer inByteBuffer,
-            ByteBuffer outByteBuffer, byte padding) throws IOException {
+    private void decrypt(final CipherState state, final ByteBuffer inByteBuffer,
+            final ByteBuffer outByteBuffer, final byte padding) throws IOException {
         Utils.checkState(inByteBuffer.position() >= padding);
         if (inByteBuffer.position() == padding) {
             // There is no real data in inBuffer.
@@ -234,11 +234,11 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
      * @param outByteBuffer the output buffer.
      * @throws IOException if an I/O error occurs.
      */
-    private void decryptBuffer(CipherState state, ByteBuffer inByteBuffer,
-            ByteBuffer outByteBuffer) throws IOException {
-        int inputSize = inByteBuffer.remaining();
+    private void decryptBuffer(final CipherState state, final ByteBuffer inByteBuffer,
+            final ByteBuffer outByteBuffer) throws IOException {
+        final int inputSize = inByteBuffer.remaining();
         try {
-            int n = state.getCryptoCipher().update(inByteBuffer, outByteBuffer);
+            final int n = state.getCryptoCipher().update(inByteBuffer, outByteBuffer);
             if (n < inputSize) {
                 /**
                  * Typically code will not get here. CryptoCipher#update will
@@ -248,11 +248,11 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
                 state.getCryptoCipher().doFinal(inByteBuffer, outByteBuffer);
                 state.reset(true);
             }
-        } catch (ShortBufferException e) {
+        } catch (final ShortBufferException e) {
             throw new IOException(e);
-        } catch (IllegalBlockSizeException e) {
+        } catch (final IllegalBlockSizeException e) {
             throw new IOException(e);
-        } catch (BadPaddingException e) {
+        } catch (final BadPaddingException e) {
             throw new IOException(e);
         }
     }
@@ -268,8 +268,8 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
      * @return the padding.
      * @throws IOException if an I/O error occurs.
      */
-    private byte postDecryption(CipherState state, ByteBuffer inByteBuffer,
-            long position, byte[] iv) throws IOException {
+    private byte postDecryption(final CipherState state, final ByteBuffer inByteBuffer,
+            final long position, final byte[] iv) throws IOException {
         byte padding = 0;
         if (state.isReset()) {
             /*
@@ -293,16 +293,16 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
      * @param iv the iv.
      * @throws IOException if an I/O error occurs.
      */
-    private void resetCipher(CipherState state, long position, byte[] iv)
+    private void resetCipher(final CipherState state, final long position, final byte[] iv)
             throws IOException {
         final long counter = getCounter(position);
         CtrCryptoInputStream.calculateIV(getInitIV(), counter, iv);
         try {
             state.getCryptoCipher().init(Cipher.DECRYPT_MODE, key,
                     new IvParameterSpec(iv));
-        } catch (InvalidKeyException e) {
+        } catch (final InvalidKeyException e) {
             throw new IOException(e);
-        } catch (InvalidAlgorithmParameterException e) {
+        } catch (final InvalidAlgorithmParameterException e) {
             throw new IOException(e);
         }
         state.reset(false);
@@ -320,7 +320,7 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
             CryptoCipher cryptoCipher;
             try {
                 cryptoCipher = CryptoCipherFactory.getCryptoCipher("AES/CTR/NoPadding", props);
-            } catch (GeneralSecurityException e) {
+            } catch (final GeneralSecurityException e) {
                 throw new IOException(e);
             }
             state = new CipherState(cryptoCipher);
@@ -334,7 +334,7 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
      *
      * @param state the CipherState instance.
      */
-    private void returnCipherState(CipherState state) {
+    private void returnCipherState(final CipherState state) {
         if (state != null) {
             cipherPool.add(state);
         }
@@ -359,7 +359,7 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
      *
      * @param buf the buffer.
      */
-    private void returnBuffer(ByteBuffer buf) {
+    private void returnBuffer(final ByteBuffer buf) {
         if (buf != null) {
             buf.clear();
             bufferPool.add(buf);
@@ -391,7 +391,7 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
     }
 
     private class CipherState {
-        private CryptoCipher cryptoCipher;
+        private final CryptoCipher cryptoCipher;
         private boolean reset;
 
         /**
@@ -399,7 +399,7 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
          *
          * @param cipher the CryptoCipher instance.
          */
-        public CipherState(CryptoCipher cipher) {
+        public CipherState(final CryptoCipher cipher) {
             this.cryptoCipher = cipher;
             this.reset = false;
         }
@@ -427,7 +427,7 @@ public class PositionedCryptoInputStream extends CtrCryptoInputStream {
          *
          * @param reset the reset.
          */
-        public void reset(boolean reset) {
+        public void reset(final boolean reset) {
             this.reset = reset;
         }
     }
diff --git a/src/main/java/org/apache/commons/crypto/stream/input/ChannelInput.java b/src/main/java/org/apache/commons/crypto/stream/input/ChannelInput.java
index ce4c9da..4cfd1fd 100644
--- a/src/main/java/org/apache/commons/crypto/stream/input/ChannelInput.java
+++ b/src/main/java/org/apache/commons/crypto/stream/input/ChannelInput.java
@@ -38,7 +38,7 @@ public class ChannelInput implements Input {
      *
      * @param channel the ReadableByteChannel object.
      */
-    public ChannelInput(ReadableByteChannel channel) {
+    public ChannelInput(final ReadableByteChannel channel) {
         this.channel = channel;
     }
 
@@ -54,7 +54,7 @@ public class ChannelInput implements Input {
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public int read(ByteBuffer dst) throws IOException {
+    public int read(final ByteBuffer dst) throws IOException {
         return channel.read(dst);
     }
 
@@ -68,7 +68,7 @@ public class ChannelInput implements Input {
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public long skip(long n) throws IOException {
+    public long skip(final long n) throws IOException {
         long remaining = n;
         int nr;
 
@@ -76,8 +76,8 @@ public class ChannelInput implements Input {
             return 0;
         }
 
-        int size = (int) Math.min(SKIP_BUFFER_SIZE, remaining);
-        ByteBuffer skipBuffer = getSkipBuf();
+        final int size = (int) Math.min(SKIP_BUFFER_SIZE, remaining);
+        final ByteBuffer skipBuffer = getSkipBuf();
         while (remaining > 0) {
             skipBuffer.clear();
             skipBuffer.limit((int) Math.min(size, remaining));
@@ -127,7 +127,7 @@ public class ChannelInput implements Input {
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public int read(long position, byte[] buffer, int offset, int length)
+    public int read(final long position, final byte[] buffer, final int offset, final int length)
             throws IOException {
         throw new UnsupportedOperationException(
                 "Positioned read is not supported by this implementation");
@@ -143,7 +143,7 @@ public class ChannelInput implements Input {
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public void seek(long position) throws IOException {
+    public void seek(final long position) throws IOException {
         throw new UnsupportedOperationException(
                 "Seek is not supported by this implementation");
     }
diff --git a/src/main/java/org/apache/commons/crypto/stream/input/StreamInput.java b/src/main/java/org/apache/commons/crypto/stream/input/StreamInput.java
index f9f6610..bc20edd 100644
--- a/src/main/java/org/apache/commons/crypto/stream/input/StreamInput.java
+++ b/src/main/java/org/apache/commons/crypto/stream/input/StreamInput.java
@@ -36,7 +36,7 @@ public class StreamInput implements Input {
      * @param inputStream the inputstream object.
      * @param bufferSize the buffersize.
      */
-    public StreamInput(InputStream inputStream, int bufferSize) {
+    public StreamInput(final InputStream inputStream, final int bufferSize) {
         this.in = inputStream;
         this.bufferSize = bufferSize;
         buf = new byte[bufferSize];
@@ -55,7 +55,7 @@ public class StreamInput implements Input {
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public int read(ByteBuffer dst) throws IOException {
+    public int read(final ByteBuffer dst) throws IOException {
         int remaining = dst.remaining();
         int read = 0;
         while (remaining > 0) {
@@ -84,7 +84,7 @@ public class StreamInput implements Input {
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public long skip(long n) throws IOException {
+    public long skip(final long n) throws IOException {
         return in.skip(n);
     }
 
@@ -124,7 +124,7 @@ public class StreamInput implements Input {
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public int read(long position, byte[] buffer, int offset, int length)
+    public int read(final long position, final byte[] buffer, final int offset, final int length)
             throws IOException {
         throw new UnsupportedOperationException(
                 "Positioned read is not supported by this implementation");
@@ -140,7 +140,7 @@ public class StreamInput implements Input {
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public void seek(long position) throws IOException {
+    public void seek(final long position) throws IOException {
         throw new UnsupportedOperationException(
                 "Seek is not supported by this implementation");
     }
diff --git a/src/main/java/org/apache/commons/crypto/stream/output/ChannelOutput.java b/src/main/java/org/apache/commons/crypto/stream/output/ChannelOutput.java
index 41abc77..ca41ea5 100644
--- a/src/main/java/org/apache/commons/crypto/stream/output/ChannelOutput.java
+++ b/src/main/java/org/apache/commons/crypto/stream/output/ChannelOutput.java
@@ -36,7 +36,7 @@ public class ChannelOutput implements Output {
      *
      * @param channel the WritableByteChannel object.
      */
-    public ChannelOutput(WritableByteChannel channel) {
+    public ChannelOutput(final WritableByteChannel channel) {
         this.channel = channel;
     }
 
@@ -51,7 +51,7 @@ public class ChannelOutput implements Output {
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public int write(ByteBuffer src) throws IOException {
+    public int write(final ByteBuffer src) throws IOException {
         return channel.write(src);
     }
 
diff --git a/src/main/java/org/apache/commons/crypto/stream/output/StreamOutput.java b/src/main/java/org/apache/commons/crypto/stream/output/StreamOutput.java
index 616f06e..57af1f8 100644
--- a/src/main/java/org/apache/commons/crypto/stream/output/StreamOutput.java
+++ b/src/main/java/org/apache/commons/crypto/stream/output/StreamOutput.java
@@ -38,7 +38,7 @@ public class StreamOutput implements Output {
      * @param out the OutputStream object.
      * @param bufferSize the buffersize.
      */
-    public StreamOutput(OutputStream out, int bufferSize) {
+    public StreamOutput(final OutputStream out, final int bufferSize) {
         this.out = out;
         this.bufferSize = bufferSize;
         buf = new byte[bufferSize];
@@ -55,7 +55,7 @@ public class StreamOutput implements Output {
      * @throws IOException if an I/O error occurs.
      */
     @Override
-    public int write(ByteBuffer src) throws IOException {
+    public int write(final ByteBuffer src) throws IOException {
         final int len = src.remaining();
 
         int remaining = len;
diff --git a/src/main/java/org/apache/commons/crypto/utils/IoUtils.java b/src/main/java/org/apache/commons/crypto/utils/IoUtils.java
index 3ad5477..13a3dd0 100644
--- a/src/main/java/org/apache/commons/crypto/utils/IoUtils.java
+++ b/src/main/java/org/apache/commons/crypto/utils/IoUtils.java
@@ -42,11 +42,11 @@ public final class IoUtils {
      * @param len the maximum number of bytes to read.
      * @throws IOException if an I/O error occurs.
      */
-    public static void readFully(InputStream in, byte buf[], int off, int len)
+    public static void readFully(final InputStream in, final byte buf[], int off, final int len)
             throws IOException {
         int toRead = len;
         while (toRead > 0) {
-            int ret = in.read(buf, off, toRead);
+            final int ret = in.read(buf, off, toRead);
             if (ret < 0) {
                 throw new IOException("Premature EOF from inputStream");
             }
@@ -66,11 +66,11 @@ public final class IoUtils {
      * @param offset the start offset in array buffer.
      * @throws IOException if an I/O error occurs.
      */
-    public static void readFully(Input in, long position, byte[] buffer,
-            int offset, int length) throws IOException {
+    public static void readFully(final Input in, final long position, final byte[] buffer,
+            final int offset, final int length) throws IOException {
         int nread = 0;
         while (nread < length) {
-            int nbytes = in.read(position + nread, buffer, offset + nread,
+            final int nbytes = in.read(position + nread, buffer, offset + nread,
                     length - nread);
             if (nbytes < 0) {
                 throw new IOException(
@@ -86,12 +86,12 @@ public final class IoUtils {
      *
      * @param closeables the objects to close.
      */
-    public static void cleanup(java.io.Closeable... closeables) {
-        for (java.io.Closeable c : closeables) {
+    public static void cleanup(final java.io.Closeable... closeables) {
+        for (final java.io.Closeable c : closeables) {
             if (c != null) {
                 try {
                     c.close();
-                } catch (IOException e) { // NOPMD
+                } catch (final IOException e) { // NOPMD
                 }
             }
         }
diff --git a/src/main/java/org/apache/commons/crypto/utils/ReflectionUtils.java b/src/main/java/org/apache/commons/crypto/utils/ReflectionUtils.java
index 52cb745..969ceff 100644
--- a/src/main/java/org/apache/commons/crypto/utils/ReflectionUtils.java
+++ b/src/main/java/org/apache/commons/crypto/utils/ReflectionUtils.java
@@ -35,7 +35,7 @@ public final class ReflectionUtils {
     private static final ClassLoader CLASSLOADER;
 
     static {
-        ClassLoader threadClassLoader = Thread.currentThread()
+        final ClassLoader threadClassLoader = Thread.currentThread()
                 .getContextClassLoader();
         CLASSLOADER = (threadClassLoader != null) ? threadClassLoader
                 : CryptoCipher.class.getClassLoader();
@@ -71,14 +71,14 @@ public final class ReflectionUtils {
      * @return a new object created by calling the constructor this object
      *         represents.
      */
-    public static <T> T newInstance(Class<T> klass, Object... args) {
+    public static <T> T newInstance(final Class<T> klass, final Object... args) {
         try {
             Constructor<T> ctor;
 
             if (args.length == 0) {
                 ctor = klass.getDeclaredConstructor();
             } else {
-                Class<?>[] argClses = new Class[args.length];
+                final Class<?>[] argClses = new Class[args.length];
                 for (int i = 0; i < args.length; i++) {
                     argClses[i] = args[i].getClass();
                 }
@@ -86,7 +86,7 @@ public final class ReflectionUtils {
             }
             ctor.setAccessible(true);
             return ctor.newInstance(args);
-        } catch (Exception e) {
+        } catch (final Exception e) {
             throw new RuntimeException(e);
         }
     }
@@ -98,9 +98,9 @@ public final class ReflectionUtils {
      * @return the class object.
      * @throws ClassNotFoundException if the class is not found.
      */
-    public static Class<?> getClassByName(String name)
+    public static Class<?> getClassByName(final String name)
             throws ClassNotFoundException {
-        Class<?> ret = getClassByNameOrNull(name);
+        final Class<?> ret = getClassByNameOrNull(name);
         if (ret == null) {
             throw new ClassNotFoundException("Class " + name + " not found");
         }
@@ -115,7 +115,7 @@ public final class ReflectionUtils {
      * @param name the class name.
      * @return the class object, or null if it could not be found.
      */
-    private static Class<?> getClassByNameOrNull(String name) {
+    private static Class<?> getClassByNameOrNull(final String name) {
         Map<String, WeakReference<Class<?>>> map;
 
         synchronized (CACHE_CLASSES) {
@@ -128,7 +128,7 @@ public final class ReflectionUtils {
         }
 
         Class<?> clazz = null;
-        WeakReference<Class<?>> ref = map.get(name);
+        final WeakReference<Class<?>> ref = map.get(name);
         if (ref != null) {
             clazz = ref.get();
         }
@@ -136,7 +136,7 @@ public final class ReflectionUtils {
         if (clazz == null) {
             try {
                 clazz = Class.forName(name, true, CLASSLOADER);
-            } catch (ClassNotFoundException e) {
+            } catch (final ClassNotFoundException e) {
                 // Leave a marker that the class isn't found
                 map.put(name, new WeakReference<Class<?>>(
                         NEGATIVE_CACHE_SENTINEL));
diff --git a/src/main/java/org/apache/commons/crypto/utils/Utils.java b/src/main/java/org/apache/commons/crypto/utils/Utils.java
index 1106912..c8a11af 100644
--- a/src/main/java/org/apache/commons/crypto/utils/Utils.java
+++ b/src/main/java/org/apache/commons/crypto/utils/Utils.java
@@ -60,27 +60,27 @@ public final class Utils {
      */
     private static Properties createDefaultProperties() {
         // default to system
-        Properties defaultedProps = new Properties(System.getProperties());
+        final Properties defaultedProps = new Properties(System.getProperties());
         try {
-            InputStream is = Thread.currentThread().getContextClassLoader()
+            final InputStream is = Thread.currentThread().getContextClassLoader()
                     .getResourceAsStream(SYSTEM_PROPERTIES_FILE);
 
             if (is == null) {
                 return defaultedProps; // no configuration file is found
             }
             // Load property file
-            Properties fileProps = new Properties();
+            final Properties fileProps = new Properties();
             fileProps.load(is);
             is.close();
-            Enumeration<?> names = fileProps.propertyNames();
+            final Enumeration<?> names = fileProps.propertyNames();
             while (names.hasMoreElements()) {
-                String name = (String) names.nextElement();
+                final String name = (String) names.nextElement();
                 // ensure System properties override ones in the file so one can override the file on the command line
                 if (System.getProperty(name) == null) {
                     defaultedProps.setProperty(name, fileProps.getProperty(name));
                 }
             }
-        } catch (Exception ex) {
+        } catch (final Exception ex) {
             System.err.println("Could not load '"
                     + SYSTEM_PROPERTIES_FILE
                     + "' from classpath: " + ex.toString());
@@ -103,8 +103,8 @@ public final class Utils {
      * @param newProp  User-defined properties
      * @return User-defined properties with the default properties
      */
-    public static Properties getProperties(Properties newProp) {
-        Properties properties = new Properties(DefaultPropertiesHolder.DEFAULT_PROPERTIES);
+    public static Properties getProperties(final Properties newProp) {
+        final Properties properties = new Properties(DefaultPropertiesHolder.DEFAULT_PROPERTIES);
         properties.putAll(newProp);
         return properties;
      }
@@ -123,11 +123,11 @@ public final class Utils {
      * @throws IOException if an I/O error occurs.
      */
     public static CryptoCipher getCipherInstance(
-            String transformation, Properties props)
+            final String transformation, final Properties props)
             throws IOException {
         try {
             return CryptoCipherFactory.getCryptoCipher(transformation, props);
-        } catch (GeneralSecurityException e) {
+        } catch (final GeneralSecurityException e) {
             throw new IOException(e);
         }
     }
@@ -139,7 +139,7 @@ public final class Utils {
      * @param expression a boolean expression.
      * @throws IllegalArgumentException if expression is false.
      */
-    public static void checkArgument(boolean expression) {
+    public static void checkArgument(final boolean expression) {
         if (!expression) {
             throw new IllegalArgumentException();
         }
@@ -154,7 +154,7 @@ public final class Utils {
      *                     .valueOf(Object)</code>.
      * @throws IllegalArgumentException if expression is false.
      */
-    public static void checkArgument(boolean expression, Object errorMessage) {
+    public static void checkArgument(final boolean expression, final Object errorMessage) {
         if (!expression) {
             throw new IllegalArgumentException(String.valueOf(errorMessage));
         }
@@ -171,7 +171,7 @@ public final class Utils {
      * @deprecated Use {@link Objects#requireNonNull(Object)}.
      */
     @Deprecated
-    public static <T> T checkNotNull(T reference) {
+    public static <T> T checkNotNull(final T reference) {
         return Objects.requireNonNull(reference, "reference");
     }
 
@@ -182,7 +182,7 @@ public final class Utils {
      * @param expression a boolean expression.
      * @throws IllegalStateException if expression is false.
      */
-    public static void checkState(boolean expression) {
+    public static void checkState(final boolean expression) {
         checkState(expression, null);
     }
 
@@ -194,7 +194,7 @@ public final class Utils {
      * @param message Error message for the exception when the expression is false.
      * @throws IllegalStateException if expression is false.
      */
-    public static void checkState(boolean expression, String message) {
+    public static void checkState(final boolean expression, final String message) {
         if (!expression) {
             throw new IllegalStateException(message);
         }
@@ -209,8 +209,8 @@ public final class Utils {
      * @param separator a delimiter for the input string.
      * @return a list of class entries.
      */
-    public static List<String> splitClassNames(String clazzNames, String separator) {
-        List<String> res = new ArrayList<>();
+    public static List<String> splitClassNames(final String clazzNames, final String separator) {
+        final List<String> res = new ArrayList<>();
         if (clazzNames == null || clazzNames.isEmpty()) {
             return res;
         }
diff --git a/src/test/java/org/apache/commons/crypto/CryptoTest.java b/src/test/java/org/apache/commons/crypto/CryptoTest.java
index a6004ee..54ad0b1 100644
--- a/src/test/java/org/apache/commons/crypto/CryptoTest.java
+++ b/src/test/java/org/apache/commons/crypto/CryptoTest.java
@@ -26,7 +26,7 @@ public class CryptoTest {
     // This test may fail unless the code was built by Maven, as
     // it relies on the VERSION file being set up correctly
     public void testGetComponentVersion() {
-        String version = Crypto.getComponentVersion();
+        final String version = Crypto.getComponentVersion();
         Assert.assertNotNull("Should not be null",version);
         Assert.assertTrue(version,version.matches("^\\d+\\.\\d+.*"));
     }
@@ -35,7 +35,7 @@ public class CryptoTest {
     // This test may fail unless the code was built by Maven, as
     // it relies on the VERSION file being set up correctly
     public void testGetComponentName() {
-        String version = Crypto.getComponentName();
+        final String version = Crypto.getComponentName();
         Assert.assertNotNull("Should not be null",version);
         Assert.assertTrue(version,version.matches("^Apache Commons Crypto.*"));
     }
diff --git a/src/test/java/org/apache/commons/crypto/NativeCodeLoaderTest.java b/src/test/java/org/apache/commons/crypto/NativeCodeLoaderTest.java
index 94ff605..8709c4f 100644
--- a/src/test/java/org/apache/commons/crypto/NativeCodeLoaderTest.java
+++ b/src/test/java/org/apache/commons/crypto/NativeCodeLoaderTest.java
@@ -66,7 +66,7 @@ public class NativeCodeLoaderTest {
         final String nameKey = System.getProperty(Crypto.LIB_NAME_KEY);
         final String pathKey = System.getProperty(Crypto.LIB_PATH_KEY);
         // An empty file should cause UnsatisfiedLinkError
-        File empty = File.createTempFile("NativeCodeLoaderTest", "tmp");
+        final File empty = File.createTempFile("NativeCodeLoaderTest", "tmp");
         try {
             System.setProperty(Crypto.LIB_PATH_KEY, empty.getParent());
             System.setProperty(Crypto.LIB_NAME_KEY, empty.getName());
diff --git a/src/test/java/org/apache/commons/crypto/cipher/AbstractCipherTest.java b/src/test/java/org/apache/commons/crypto/cipher/AbstractCipherTest.java
index ce2d8f2..f14804a 100644
--- a/src/test/java/org/apache/commons/crypto/cipher/AbstractCipherTest.java
+++ b/src/test/java/org/apache/commons/crypto/cipher/AbstractCipherTest.java
@@ -71,14 +71,14 @@ public abstract class AbstractCipherTest {
     @Test
     public void closeTestNoInit() throws Exception {
         // This test deliberately does not use try with resources in order to control the sequence of operations exactly
-        CryptoCipher enc = getCipher(transformations[0]);
+        final CryptoCipher enc = getCipher(transformations[0]);
         enc.close();
     }
 
     @Test
     public void closeTestAfterInit() throws Exception {
         // This test deliberately does not use try with resources in order to control the sequence of operations exactly
-        CryptoCipher enc = getCipher(transformations[0]);
+        final CryptoCipher enc = getCipher(transformations[0]);
         enc.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(KEY, "AES"), new IvParameterSpec(IV));
         enc.close();
     }
@@ -86,7 +86,7 @@ public abstract class AbstractCipherTest {
     @Test
     public void reInitTest() throws Exception {
         // This test deliberately does not use try with resources in order to control the sequence of operations exactly
-        CryptoCipher enc = getCipher(transformations[0]);
+        final CryptoCipher enc = getCipher(transformations[0]);
         enc.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(KEY, "AES"), new IvParameterSpec(IV));
         enc.init(Cipher.DECRYPT_MODE, new SecretKeySpec(KEY, "AES"), new IvParameterSpec(IV));
         enc.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(KEY, "AES"), new IvParameterSpec(IV));
@@ -96,7 +96,7 @@ public abstract class AbstractCipherTest {
     @Test
     public void reInitAfterClose() throws Exception {
         // This test deliberately does not use try with resources in order to control the sequence of operations exactly
-        CryptoCipher enc = getCipher(transformations[0]);
+        final CryptoCipher enc = getCipher(transformations[0]);
         enc.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(KEY, "AES"), new IvParameterSpec(IV));
         enc.close();
         enc.init(Cipher.DECRYPT_MODE, new SecretKeySpec(KEY, "AES"), new IvParameterSpec(IV));
@@ -106,7 +106,7 @@ public abstract class AbstractCipherTest {
     @Test
     public void closeTestRepeat() throws Exception {
         // This test deliberately does not use try with resources in order to control the sequence of operations exactly
-        CryptoCipher enc = getCipher(transformations[0]);
+        final CryptoCipher enc = getCipher(transformations[0]);
         enc.close();
         enc.close(); // repeat the close
         enc.close();
@@ -114,24 +114,24 @@ public abstract class AbstractCipherTest {
 
     @Test
     public void cryptoTest() throws Exception {
-        for (String tran : transformations) {
+        for (final String tran : transformations) {
             /** uses the small data set in {@link TestData} */
             cipherTests = TestData.getTestData(tran);
             assertNotNull(tran, cipherTests);
             for (int i = 0; i != cipherTests.length; i += 5) {
-                byte[] key = DatatypeConverter
+                final byte[] key = DatatypeConverter
                         .parseHexBinary(cipherTests[i + 1]);
-                byte[] iv = DatatypeConverter
+                final byte[] iv = DatatypeConverter
                         .parseHexBinary(cipherTests[i + 2]);
 
-                byte[] inputBytes = DatatypeConverter
+                final byte[] inputBytes = DatatypeConverter
                         .parseHexBinary(cipherTests[i + 3]);
-                byte[] outputBytes = DatatypeConverter
+                final byte[] outputBytes = DatatypeConverter
                         .parseHexBinary(cipherTests[i + 4]);
 
-                ByteBuffer inputBuffer = ByteBuffer
+                final ByteBuffer inputBuffer = ByteBuffer
                         .allocateDirect(inputBytes.length);
-                ByteBuffer outputBuffer = ByteBuffer
+                final ByteBuffer outputBuffer = ByteBuffer
                         .allocateDirect(outputBytes.length);
                 inputBuffer.put(inputBytes);
                 inputBuffer.flip();
@@ -147,17 +147,17 @@ public abstract class AbstractCipherTest {
         }
     }
 
-    private void byteBufferTest(String transformation,
-            byte[] key, byte[] iv, ByteBuffer input, ByteBuffer output)
+    private void byteBufferTest(final String transformation,
+            final byte[] key, final byte[] iv, final ByteBuffer input, final ByteBuffer output)
             throws Exception {
-        ByteBuffer decResult = ByteBuffer.allocateDirect(BYTEBUFFER_SIZE);
-        ByteBuffer encResult = ByteBuffer.allocateDirect(BYTEBUFFER_SIZE);
+        final ByteBuffer decResult = ByteBuffer.allocateDirect(BYTEBUFFER_SIZE);
+        final ByteBuffer encResult = ByteBuffer.allocateDirect(BYTEBUFFER_SIZE);
 
-        CryptoCipher enc = getCipher(transformation);
+        final CryptoCipher enc = getCipher(transformation);
         enc.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(key, "AES"),
                 new IvParameterSpec(iv));
 
-        CryptoCipher dec = getCipher(transformation);
+        final CryptoCipher dec = getCipher(transformation);
         dec.init(Cipher.DECRYPT_MODE, new SecretKeySpec(key, "AES"),
                 new IvParameterSpec(iv));
 
@@ -168,9 +168,9 @@ public abstract class AbstractCipherTest {
         input.flip();
         encResult.flip();
         if (!output.equals(encResult)) {
-            byte[] b = new byte[output.remaining()];
+            final byte[] b = new byte[output.remaining()];
             output.get(b);
-            byte[] c = new byte[encResult.remaining()];
+            final byte[] c = new byte[encResult.remaining()];
             encResult.get(c);
             Assert.fail("AES failed encryption - expected "
                     + new String(DatatypeConverter.printHexBinary(b)) + " got "
@@ -184,8 +184,8 @@ public abstract class AbstractCipherTest {
         decResult.flip();
 
         if (!input.equals(decResult)) {
-            byte[] inArray = new byte[input.remaining()];
-            byte[] decResultArray = new byte[decResult.remaining()];
+            final byte[] inArray = new byte[input.remaining()];
+            final byte[] decResultArray = new byte[decResult.remaining()];
             input.get(inArray);
             decResult.get(decResultArray);
             Assert.fail();
@@ -193,46 +193,46 @@ public abstract class AbstractCipherTest {
     }
 
     /** test byte array whose data is planned in {@link TestData} */
-    private void byteArrayTest(String transformation, byte[] key,
-            byte[] iv, byte[] input, byte[] output)
+    private void byteArrayTest(final String transformation, final byte[] key,
+            final byte[] iv, final byte[] input, final byte[] output)
             throws Exception {
         resetCipher(transformation, key, iv);
-        int blockSize = enc.getBlockSize();
+        final int blockSize = enc.getBlockSize();
 
         byte[] temp = new byte[input.length + blockSize];
-        int n = enc.doFinal(input, 0, input.length, temp, 0);
-        byte[] cipherText = new byte[n];
+        final int n = enc.doFinal(input, 0, input.length, temp, 0);
+        final byte[] cipherText = new byte[n];
         System.arraycopy(temp, 0, cipherText, 0, n);
         Assert.assertArrayEquals("byte array encryption error.", output,
                 cipherText);
 
         temp = new byte[cipherText.length + blockSize];
-        int m = dec.doFinal(cipherText, 0, cipherText.length, temp, 0);
-        byte[] plainText = new byte[m];
+        final int m = dec.doFinal(cipherText, 0, cipherText.length, temp, 0);
+        final byte[] plainText = new byte[m];
         System.arraycopy(temp, 0, plainText, 0, m);
         Assert.assertArrayEquals("byte array decryption error.", input,
                 plainText);
     }
 
     /** test byte array whose data is randomly generated */
-    private void byteArrayTest(String transformation, byte[] key,
-            byte[] iv) throws Exception {
-        int blockSize = enc.getBlockSize();
+    private void byteArrayTest(final String transformation, final byte[] key,
+            final byte[] iv) throws Exception {
+        final int blockSize = enc.getBlockSize();
 
         // AES_CBC_NOPADDING only accepts data whose size is the multiple of
         // block size
-        int[] dataLenList = transformation.equals("AES/CBC/NoPadding") ? new int[] { 10 * 1024 }
+        final int[] dataLenList = transformation.equals("AES/CBC/NoPadding") ? new int[] { 10 * 1024 }
                 : new int[] { 10 * 1024, 10 * 1024 - 3 };
-        for (int dataLen : dataLenList) {
-            byte[] plainText = new byte[dataLen];
-            Random random = new SecureRandom();
+        for (final int dataLen : dataLenList) {
+            final byte[] plainText = new byte[dataLen];
+            final Random random = new SecureRandom();
             random.nextBytes(plainText);
-            byte[] cipherText = new byte[dataLen + blockSize];
+            final byte[] cipherText = new byte[dataLen + blockSize];
 
             // check update method with inputs whose sizes are the multiple of
             // block size or not
-            int[] bufferLenList = new int[] { 2 * 1024 - 128, 2 * 1024 - 125 };
-            for (int bufferLen : bufferLenList) {
+            final int[] bufferLenList = new int[] { 2 * 1024 - 128, 2 * 1024 - 125 };
+            for (final int bufferLen : bufferLenList) {
                 resetCipher(transformation, key, iv);
 
                 int offset = 0;
@@ -248,7 +248,7 @@ public abstract class AbstractCipherTest {
 
                 offset = 0;
                 // decrypt (update + doFinal) the data
-                byte[] realPlainText = new byte[cipherPos + blockSize];
+                final byte[] realPlainText = new byte[cipherPos + blockSize];
                 int plainPos = 0;
                 for (int i = 0; i < cipherPos / bufferLen; i++) {
                     plainPos += dec.update(cipherText, offset, bufferLen,
@@ -263,7 +263,7 @@ public abstract class AbstractCipherTest {
                         "random byte array length changes after transformation",
                         dataLen, plainPos);
 
-                byte[] shrinkPlainText = new byte[plainPos];
+                final byte[] shrinkPlainText = new byte[plainPos];
                 System.arraycopy(realPlainText, 0, shrinkPlainText, 0, plainPos);
                 Assert.assertArrayEquals(
                         "random byte array contents changes after transformation",
@@ -272,7 +272,7 @@ public abstract class AbstractCipherTest {
         }
     }
 
-    private void resetCipher(String transformation, byte[] key, byte[] iv) throws Exception {
+    private void resetCipher(final String transformation, final byte[] key, final byte[] iv) throws Exception {
         enc = getCipher(transformation);
         dec = getCipher(transformation);
 
@@ -283,7 +283,7 @@ public abstract class AbstractCipherTest {
                 new IvParameterSpec(iv));
     }
 
-    private CryptoCipher getCipher(String transformation) throws Exception {
+    private CryptoCipher getCipher(final String transformation) throws Exception {
         return (CryptoCipher) ReflectionUtils.newInstance(
                 ReflectionUtils.getClassByName(cipherClass), props,
                 transformation);
diff --git a/src/test/java/org/apache/commons/crypto/cipher/CryptoCipherFactoryTest.java b/src/test/java/org/apache/commons/crypto/cipher/CryptoCipherFactoryTest.java
index f47e7e0..a5b0ff0 100644
--- a/src/test/java/org/apache/commons/crypto/cipher/CryptoCipherFactoryTest.java
+++ b/src/test/java/org/apache/commons/crypto/cipher/CryptoCipherFactoryTest.java
@@ -26,7 +26,7 @@ import org.junit.Test;
 public class CryptoCipherFactoryTest {
     @Test
     public void testDefaultCipher() throws GeneralSecurityException {
-        CryptoCipher defaultCipher = CryptoCipherFactory
+        final CryptoCipher defaultCipher = CryptoCipherFactory
                 .getCryptoCipher("AES/CBC/NoPadding");
         final String name = defaultCipher.getClass().getName();
         if (OpenSsl.getLoadingFailureReason() == null) {
@@ -38,9 +38,9 @@ public class CryptoCipherFactoryTest {
 
     @Test
     public void testEmptyCipher() throws GeneralSecurityException {
-        Properties properties = new Properties();
+        final Properties properties = new Properties();
         properties.setProperty(CryptoCipherFactory.CLASSES_KEY, ""); // TODO should this really mean use the default?
-        CryptoCipher defaultCipher = CryptoCipherFactory.getCryptoCipher(
+        final CryptoCipher defaultCipher = CryptoCipherFactory.getCryptoCipher(
                 "AES/CBC/NoPadding", properties);
         final String name = defaultCipher.getClass().getName();
         if (OpenSsl.getLoadingFailureReason() == null) {
@@ -52,7 +52,7 @@ public class CryptoCipherFactoryTest {
 
     @Test(expected = GeneralSecurityException.class)
     public void testInvalidCipher() throws GeneralSecurityException {
-        Properties properties = new Properties();
+        final Properties properties = new Properties();
         properties.setProperty(CryptoCipherFactory.CLASSES_KEY,
                 "InvalidCipherName");
         CryptoCipherFactory.getCryptoCipher("AES/CBC/NoPadding", properties);
@@ -60,13 +60,13 @@ public class CryptoCipherFactoryTest {
 
     @Test(expected = GeneralSecurityException.class)
     public void testInvalidTransformation() throws GeneralSecurityException {
-      Properties properties = new Properties();
+      final Properties properties = new Properties();
       CryptoCipherFactory.getCryptoCipher("AES/Invalid/NoPadding", properties);
     }
 
     @Test(expected = IllegalArgumentException.class)
     public void testNoCipher() throws Exception {
-        Properties properties = new Properties();
+        final Properties properties = new Properties();
         // An empty string currently means use the default
         // However the splitter drops empty fields
         properties.setProperty(CryptoCipherFactory.CLASSES_KEY, ",");
diff --git a/src/test/java/org/apache/commons/crypto/cipher/GcmCipherTest.java b/src/test/java/org/apache/commons/crypto/cipher/GcmCipherTest.java
index 7e75dda..cdfc5eb 100644
--- a/src/test/java/org/apache/commons/crypto/cipher/GcmCipherTest.java
+++ b/src/test/java/org/apache/commons/crypto/cipher/GcmCipherTest.java
@@ -69,13 +69,13 @@ public class GcmCipherTest {
         // iv length:           12 bytes
         // aad length:          0 bytes
 
-        String kHex = "00000000000000000000000000000000";
-        String pHex = "00000000000000000000000000000000";
-        String ivHex = "000000000000000000000000";
-        String aadHex = "";
+        final String kHex = "00000000000000000000000000000000";
+        final String pHex = "00000000000000000000000000000000";
+        final String ivHex = "000000000000000000000000";
+        final String aadHex = "";
 
-        String cHex = "0388dace60b6a392f328c2b971b2fe78";
-        String tHex = "ab6e47d42cec13bdf53a67b21257bddf";
+        final String cHex = "0388dace60b6a392f328c2b971b2fe78";
+        final String tHex = "ab6e47d42cec13bdf53a67b21257bddf";
 
         testGcmEncryption(kHex, pHex, ivHex, aadHex, cHex, tHex);
         testGcmDecryption(kHex, pHex, ivHex, aadHex, cHex, tHex);
@@ -91,20 +91,20 @@ public class GcmCipherTest {
         // iv length:           12 bytes
         // aad length:          20 bytes
 
-        String kHex = "feffe9928665731c6d6a8f9467308308";
-        String pHex = "d9313225f88406e5a55909c5aff5269a"
+        final String kHex = "feffe9928665731c6d6a8f9467308308";
+        final String pHex = "d9313225f88406e5a55909c5aff5269a"
                 + "86a7a9531534f7da2e4c303d8a318a72"
                 + "1c3c0c95956809532fcf0e2449a6b525"
                 + "b16aedf5aa0de657ba637b39";
-        String ivHex = "cafebabefacedbaddecaf888";
-        String aadHex = "feedfacedeadbeeffeedfacedeadbeef"
+        final String ivHex = "cafebabefacedbaddecaf888";
+        final String aadHex = "feedfacedeadbeeffeedfacedeadbeef"
                 + "abaddad2";
 
-        String cHex = "42831ec2217774244b7221b784d0d49c"
+        final String cHex = "42831ec2217774244b7221b784d0d49c"
                 + "e3aa212f2c02a4e035c17e2329aca12e"
                 + "21d514b25466931c7d8f6a5aac84aa05"
                 + "1ba30b396a0aac973d58e091";
-        String tHex = "5bc94fbc3221a5db94fae95ae7121a47";
+        final String tHex = "5bc94fbc3221a5db94fae95ae7121a47";
 
         testGcmEncryption(kHex, pHex, ivHex, aadHex, cHex, tHex);
         testGcmDecryption(kHex, pHex, ivHex, aadHex, cHex, tHex);
@@ -120,24 +120,24 @@ public class GcmCipherTest {
         // iv length:           8 bytes
         // aad length:          20 bytes
 
-        String kHex = "feffe9928665731c6d6a8f9467308308";
+        final String kHex = "feffe9928665731c6d6a8f9467308308";
 
-        String pHex = "d9313225f88406e5a55909c5aff5269a"
+        final String pHex = "d9313225f88406e5a55909c5aff5269a"
                 + "86a7a9531534f7da2e4c303d8a318a72"
                 + "1c3c0c95956809532fcf0e2449a6b525"
                 + "b16aedf5aa0de657ba637b39";
 
-        String ivHex ="cafebabefacedbad"; // 64bits < 96bits
+        final String ivHex ="cafebabefacedbad"; // 64bits < 96bits
 
-        String aadHex="feedfacedeadbeeffeedfacedeadbeef"
+        final String aadHex="feedfacedeadbeeffeedfacedeadbeef"
                 + "abaddad2";
 
-        String cHex = "61353b4c2806934a777ff51fa22a4755"
+        final String cHex = "61353b4c2806934a777ff51fa22a4755"
                 + "699b2a714fcdc6f83766e5f97b6c7423"
                 + "73806900e49f24b22b097544d4896b42"
                 + "4989b5e1ebac0f07c23f4598";
 
-        String tHex = "3612d2e79e3b0785561be14aaca2fccb";
+        final String tHex = "3612d2e79e3b0785561be14aaca2fccb";
 
         testGcmEncryption(kHex, pHex, ivHex, aadHex, cHex, tHex);
         testGcmDecryption(kHex, pHex, ivHex, aadHex, cHex, tHex);
@@ -153,27 +153,27 @@ public class GcmCipherTest {
         // iv length:           60 bytes
         // aad length:          20 bytes
 
-        String kHex = "feffe9928665731c6d6a8f9467308308";
+        final String kHex = "feffe9928665731c6d6a8f9467308308";
 
-        String pHex = "d9313225f88406e5a55909c5aff5269a"
+        final String pHex = "d9313225f88406e5a55909c5aff5269a"
                 + "86a7a9531534f7da2e4c303d8a318a72"
                 + "1c3c0c95956809532fcf0e2449a6b525"
                 + "b16aedf5aa0de657ba637b39";
 
-        String ivHex ="9313225df88406e555909c5aff5269aa"
+        final String ivHex ="9313225df88406e555909c5aff5269aa"
                 + "6a7a9538534f7da1e4c303d2a318a728"
                 + "c3c0c95156809539fcf0e2429a6b5254"
                 + "16aedbf5a0de6a57a637b39b"; // > 96bits
 
-        String aadHex="feedfacedeadbeeffeedfacedeadbeef"
+        final String aadHex="feedfacedeadbeeffeedfacedeadbeef"
                 + "abaddad2";
 
-        String cHex = "8ce24998625615b603a033aca13fb894"
+        final String cHex = "8ce24998625615b603a033aca13fb894"
                 + "be9112a5c3a211a8ba262a3cca7e2ca7"
                 + "01e4a9a4fba43c90ccdcb281d48c7c6f"
                 + "d62875d2aca417034c34aee5";
 
-        String tHex = "619cc5aefffe0bfa462af43c1699d050";
+        final String tHex = "619cc5aefffe0bfa462af43c1699d050";
 
         testGcmEncryption(kHex, pHex, ivHex, aadHex, cHex, tHex);
         testGcmDecryption(kHex, pHex, ivHex, aadHex, cHex, tHex);
@@ -196,31 +196,31 @@ public class GcmCipherTest {
     @Test(expected = AEADBadTagException.class)
     public void testGcmTamperedData() throws Exception {
 
-        Random r = new Random();
-        int textLength = r.nextInt(1024*1024);
-        int ivLength = r.nextInt(60);
-        int keyLength = 16;
-        int tagLength = 128;  // bits
-        int aadLength = r.nextInt(128);
+        final Random r = new Random();
+        final int textLength = r.nextInt(1024*1024);
+        final int ivLength = r.nextInt(60);
+        final int keyLength = 16;
+        final int tagLength = 128;  // bits
+        final int aadLength = r.nextInt(128);
 
-        byte[] keyBytes = new byte[keyLength];
-        byte[] plainBytes = new byte[textLength];
-        byte[] ivBytes = new byte[ivLength];
-        byte[] aadBytes = new byte[aadLength];
+        final byte[] keyBytes = new byte[keyLength];
+        final byte[] plainBytes = new byte[textLength];
+        final byte[] ivBytes = new byte[ivLength];
+        final byte[] aadBytes = new byte[aadLength];
 
         r.nextBytes(keyBytes);
         r.nextBytes(plainBytes);
         r.nextBytes(ivBytes);
         r.nextBytes(aadBytes);
 
-        byte[] encOutput = new byte[plainBytes.length + (tagLength >> 3)];
-        byte[] decOutput = new byte[plainBytes.length];
+        final byte[] encOutput = new byte[plainBytes.length + (tagLength >> 3)];
+        final byte[] decOutput = new byte[plainBytes.length];
 
         {
-            CryptoCipher c = Utils.getCipherInstance(transformation, props);
-            Key key = new SecretKeySpec(keyBytes, "AES");
+            final CryptoCipher c = Utils.getCipherInstance(transformation, props);
+            final Key key = new SecretKeySpec(keyBytes, "AES");
 
-            GCMParameterSpec iv = new GCMParameterSpec(tagLength, ivBytes);
+            final GCMParameterSpec iv = new GCMParameterSpec(tagLength, ivBytes);
             c.init(Cipher.ENCRYPT_MODE, key, iv);
             c.updateAAD(aadBytes);
             c.doFinal(plainBytes, 0, plainBytes.length, encOutput, 0);
@@ -231,16 +231,16 @@ public class GcmCipherTest {
         encOutput[0] = (byte)(encOutput[0] + 1);
 
         try {
-            CryptoCipher c = Utils.getCipherInstance(transformation, props);
-            Key key = new SecretKeySpec(keyBytes, "AES");
+            final CryptoCipher c = Utils.getCipherInstance(transformation, props);
+            final Key key = new SecretKeySpec(keyBytes, "AES");
 
-            GCMParameterSpec iv = new GCMParameterSpec(tagLength, ivBytes);
+            final GCMParameterSpec iv = new GCMParameterSpec(tagLength, ivBytes);
             c.init(Cipher.DECRYPT_MODE, key, iv);
             c.updateAAD(aadBytes);
             c.doFinal(encOutput, 0, encOutput.length, decOutput, 0);
             c.close();
         }
-        catch (AEADBadTagException ex) {
+        catch (final AEADBadTagException ex) {
             Assert.assertTrue("Tag mismatch!".equals(ex.getMessage()));
             throw ex;
         }
@@ -251,16 +251,16 @@ public class GcmCipherTest {
         // for GMAC,  aad is the input data,
         // tag is the digest message
 
-        Random r = new Random();
-        byte[] keyBytes = new byte[32];
-        byte[] input = new byte[0];  // no input for GMAC
-        byte[] ivBytes = new byte[16];
+        final Random r = new Random();
+        final byte[] keyBytes = new byte[32];
+        final byte[] input = new byte[0];  // no input for GMAC
+        final byte[] ivBytes = new byte[16];
 
-        byte[] tag_orig = new byte[16]; // JDK's tag
-        byte[] tag = new byte[16];
+        final byte[] tag_orig = new byte[16]; // JDK's tag
+        final byte[] tag = new byte[16];
 
         // aad is the data to be hashed
-        byte[] aad = new byte[r.nextInt() % 1000 + 1000 ];
+        final byte[] aad = new byte[r.nextInt() % 1000 + 1000 ];
 
         r.nextBytes(keyBytes);
         r.nextBytes(input);
@@ -268,18 +268,18 @@ public class GcmCipherTest {
         r.nextBytes(aad);
 
         {
-            Cipher c = Cipher.getInstance(transformation);
-            Key key = new SecretKeySpec(keyBytes, "AES");
-            GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
+            final Cipher c = Cipher.getInstance(transformation);
+            final Key key = new SecretKeySpec(keyBytes, "AES");
+            final GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
             c.init(Cipher.ENCRYPT_MODE, key, iv);
             c.updateAAD(aad);
             c.doFinal(input, 0, input.length, tag_orig, 0);
         }
 
         {
-            CryptoCipher c = Utils.getCipherInstance(transformation, props);
-            Key key = new SecretKeySpec(keyBytes, "AES");
-            GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
+            final CryptoCipher c = Utils.getCipherInstance(transformation, props);
+            final Key key = new SecretKeySpec(keyBytes, "AES");
+            final GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
             c.init(Cipher.ENCRYPT_MODE, key, iv);
             c.updateAAD(aad);
             c.doFinal(input, 0, input.length, tag, 0);
@@ -292,9 +292,9 @@ public class GcmCipherTest {
         // like JDK's decrypt mode. The plaintext+tag is the input for decrypt mode
         // let's verify the add & tag now
         {
-            CryptoCipher c = Utils.getCipherInstance(transformation, props);
-            Key key = new SecretKeySpec(keyBytes, "AES");
-            GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
+            final CryptoCipher c = Utils.getCipherInstance(transformation, props);
+            final Key key = new SecretKeySpec(keyBytes, "AES");
+            final GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
             c.init(Cipher.DECRYPT_MODE, key, iv);
             c.updateAAD(aad);
             c.doFinal(tag, 0, tag.length, input, 0);
@@ -304,14 +304,14 @@ public class GcmCipherTest {
 
     @Test(expected = AEADBadTagException.class)
     public void testGMacTamperedData() throws Exception {
-        Random r = new Random();
-        byte[] keyBytes = new byte[32];
-        byte[] input = new byte[0];
-        byte[] ivBytes = new byte[16];
+        final Random r = new Random();
+        final byte[] keyBytes = new byte[32];
+        final byte[] input = new byte[0];
+        final byte[] ivBytes = new byte[16];
 
-        byte[] tag = new byte[16];
+        final byte[] tag = new byte[16];
 
-        byte[] aad = new byte[r.nextInt() % 1000 + 1000 ];
+        final byte[] aad = new byte[r.nextInt() % 1000 + 1000 ];
 
         r.nextBytes(keyBytes);
         r.nextBytes(input);
@@ -319,9 +319,9 @@ public class GcmCipherTest {
         r.nextBytes(aad);
 
         {
-            CryptoCipher c = Utils.getCipherInstance(transformation, props);
-            Key key = new SecretKeySpec(keyBytes, "AES");
-            GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
+            final CryptoCipher c = Utils.getCipherInstance(transformation, props);
+            final Key key = new SecretKeySpec(keyBytes, "AES");
+            final GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
             c.init(Cipher.ENCRYPT_MODE, key, iv);
             c.updateAAD(aad);
             c.doFinal(input, 0, input.length, tag, 0);
@@ -330,9 +330,9 @@ public class GcmCipherTest {
 
         try {
             // like JDK's decrypt mode. The plaintext+tag is the input for decrypt mode
-            CryptoCipher c = Utils.getCipherInstance(transformation, props);
-            Key key = new SecretKeySpec(keyBytes, "AES");
-            GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
+            final CryptoCipher c = Utils.getCipherInstance(transformation, props);
+            final Key key = new SecretKeySpec(keyBytes, "AES");
+            final GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
             c.init(Cipher.DECRYPT_MODE, key, iv);
 
             // if the origin data is tampered
@@ -343,28 +343,28 @@ public class GcmCipherTest {
             c.close();
 
         }
-        catch (AEADBadTagException ex) {
+        catch (final AEADBadTagException ex) {
             Assert.assertTrue("Tag mismatch!".equals(ex.getMessage()));
             throw ex;
         }
     }
 
-    private void testGcmEncryption(String kHex, String pHex, String ivHex, String aadHex,
-                                   String cHex, String tHex) throws Exception {
+    private void testGcmEncryption(final String kHex, final String pHex, final String ivHex, final String aadHex,
+                                   final String cHex, final String tHex) throws Exception {
 
-        byte[] keyBytes = DatatypeConverter.parseHexBinary(kHex);
-        byte[] input = DatatypeConverter.parseHexBinary(pHex);
-        byte[] ivBytes = DatatypeConverter.parseHexBinary(ivHex);
-        byte[] aad = DatatypeConverter.parseHexBinary(aadHex);
-        byte[] expectedOutput = DatatypeConverter.parseHexBinary(cHex+tHex);
+        final byte[] keyBytes = DatatypeConverter.parseHexBinary(kHex);
+        final byte[] input = DatatypeConverter.parseHexBinary(pHex);
+        final byte[] ivBytes = DatatypeConverter.parseHexBinary(ivHex);
+        final byte[] aad = DatatypeConverter.parseHexBinary(aadHex);
+        final byte[] expectedOutput = DatatypeConverter.parseHexBinary(cHex+tHex);
 
-        byte[] output = new byte[expectedOutput.length];
+        final byte[] output = new byte[expectedOutput.length];
 
-        CryptoCipher c = Utils.getCipherInstance(transformation, props);
+        final CryptoCipher c = Utils.getCipherInstance(transformation, props);
 
-        Key key = new SecretKeySpec(keyBytes, "AES");
+        final Key key = new SecretKeySpec(keyBytes, "AES");
 
-        GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
+        final GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
         c.init(Cipher.ENCRYPT_MODE, key, iv);
         c.updateAAD(aad);
 
@@ -374,28 +374,28 @@ public class GcmCipherTest {
         c.close();
     }
 
-    private void testGcmArbitraryLengthUpdate(String kHex, String pHex, String ivHex, String aadHex,
-                                              String cHex, String tHex) throws Exception {
+    private void testGcmArbitraryLengthUpdate(final String kHex, final String pHex, final String ivHex, final String aadHex,
+                                              final String cHex, final String tHex) throws Exception {
 
-        byte[] keyBytes = DatatypeConverter.parseHexBinary(kHex);
-        byte[] input = DatatypeConverter.parseHexBinary(pHex);
-        byte[] ivBytes = DatatypeConverter.parseHexBinary(ivHex);
-        byte[] aad = DatatypeConverter.parseHexBinary(aadHex);
-        byte[] expectedOutput = DatatypeConverter.parseHexBinary(cHex+tHex);
+        final byte[] keyBytes = DatatypeConverter.parseHexBinary(kHex);
+        final byte[] input = DatatypeConverter.parseHexBinary(pHex);
+        final byte[] ivBytes = DatatypeConverter.parseHexBinary(ivHex);
+        final byte[] aad = DatatypeConverter.parseHexBinary(aadHex);
+        final byte[] expectedOutput = DatatypeConverter.parseHexBinary(cHex+tHex);
 
-        byte[] encOutput = new byte[expectedOutput.length];
-        byte[] decOutput = new byte[input.length];
+        final byte[] encOutput = new byte[expectedOutput.length];
+        final byte[] decOutput = new byte[input.length];
 
-        Random r = new Random();
+        final Random r = new Random();
 
-        CryptoCipher enc = Utils.getCipherInstance(transformation, props);
-        Key key = new SecretKeySpec(keyBytes, "AES");
-        GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
+        final CryptoCipher enc = Utils.getCipherInstance(transformation, props);
+        final Key key = new SecretKeySpec(keyBytes, "AES");
+        final GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
         enc.init(Cipher.ENCRYPT_MODE, key, iv);
         if (aad.length > 0) {
-            int len1 = r.nextInt(aad.length) ;
-            byte[] aad1 = Arrays.copyOfRange(aad, 0, len1);
-            byte[] aad2 = Arrays.copyOfRange(aad, len1, aad.length);
+            final int len1 = r.nextInt(aad.length) ;
+            final byte[] aad1 = Arrays.copyOfRange(aad, 0, len1);
+            final byte[] aad2 = Arrays.copyOfRange(aad, len1, aad.length);
             enc.updateAAD(aad1);
             enc.updateAAD(aad2);
         }
@@ -410,17 +410,17 @@ public class GcmCipherTest {
         enc.close();
 
         // Decryption
-        CryptoCipher dec = Utils.getCipherInstance(transformation, props);
+        final CryptoCipher dec = Utils.getCipherInstance(transformation, props);
         dec.init(Cipher.DECRYPT_MODE, new SecretKeySpec(keyBytes, "AES"),
                 new GCMParameterSpec(128, ivBytes));
         if (aad.length > 0) {
-            int len1 = r.nextInt(aad.length) ;
-            byte[] aad1 = Arrays.copyOfRange(aad, 0, len1);
-            byte[] aad2 = Arrays.copyOfRange(aad, len1, aad.length);
+            final int len1 = r.nextInt(aad.length) ;
+            final byte[] aad1 = Arrays.copyOfRange(aad, 0, len1);
+            final byte[] aad2 = Arrays.copyOfRange(aad, len1, aad.length);
             dec.updateAAD(aad1);
             dec.updateAAD(aad2);
         }
-        byte[] decInput = encOutput;
+        final byte[] decInput = encOutput;
         partLen = r.nextInt(input.length);
         len = dec.update(decInput, 0, partLen, decOutput, 0);
         Assert.assertTrue(len == 0);
@@ -431,24 +431,24 @@ public class GcmCipherTest {
         dec.close();
     }
 
-    private void testGcmDecryption(String kHex, String pHex, String ivHex, String aadHex,
-                                   String cHex, String tHex) throws Exception {
+    private void testGcmDecryption(final String kHex, final String pHex, final String ivHex, final String aadHex,
+                                   final String cHex, final String tHex) throws Exception {
 
-        byte[] keyBytes = DatatypeConverter.parseHexBinary(kHex);
-        byte[] plainBytes = DatatypeConverter.parseHexBinary(pHex);
-        byte[] ivBytes = DatatypeConverter.parseHexBinary(ivHex);
+        final byte[] keyBytes = DatatypeConverter.parseHexBinary(kHex);
+        final byte[] plainBytes = DatatypeConverter.parseHexBinary(pHex);
+        final byte[] ivBytes = DatatypeConverter.parseHexBinary(ivHex);
 
-        byte[] aad = DatatypeConverter.parseHexBinary(aadHex);
-        byte[] cipherBytes = DatatypeConverter.parseHexBinary(cHex+tHex);
+        final byte[] aad = DatatypeConverter.parseHexBinary(aadHex);
+        final byte[] cipherBytes = DatatypeConverter.parseHexBinary(cHex+tHex);
 
-        byte[] input = cipherBytes;
-        byte[] output = new byte[plainBytes.length];
+        final byte[] input = cipherBytes;
+        final byte[] output = new byte[plainBytes.length];
 
-        CryptoCipher c = Utils.getCipherInstance(transformation, props);
+        final CryptoCipher c = Utils.getCipherInstance(transformation, props);
 
-        Key key = new SecretKeySpec(keyBytes, "AES");
+        final Key key = new SecretKeySpec(keyBytes, "AES");
 
-        GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
+        final GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
         c.init(Cipher.DECRYPT_MODE, key, iv);
         c.updateAAD(aad);
         c.doFinal(input, 0, input.length, output, 0);
@@ -457,24 +457,24 @@ public class GcmCipherTest {
         c.close();
     }
 
-    private void testGcmReturnDataAfterTagVerified(String kHex, String pHex, String ivHex, String aadHex,
-                                                   String cHex, String tHex) throws Exception {
+    private void testGcmReturnDataAfterTagVerified(final String kHex, final String pHex, final String ivHex, final String aadHex,
+                                                   final String cHex, final String tHex) throws Exception {
 
-        byte[] keyBytes = DatatypeConverter.parseHexBinary(kHex);
-        byte[] plainBytes = DatatypeConverter.parseHexBinary(pHex);
-        byte[] ivBytes = DatatypeConverter.parseHexBinary(ivHex);
+        final byte[] keyBytes = DatatypeConverter.parseHexBinary(kHex);
+        final byte[] plainBytes = DatatypeConverter.parseHexBinary(pHex);
+        final byte[] ivBytes = DatatypeConverter.parseHexBinary(ivHex);
 
-        byte[] aad = DatatypeConverter.parseHexBinary(aadHex);
-        byte[] cipherBytes = DatatypeConverter.parseHexBinary(cHex+tHex);
+        final byte[] aad = DatatypeConverter.parseHexBinary(aadHex);
+        final byte[] cipherBytes = DatatypeConverter.parseHexBinary(cHex+tHex);
 
-        byte[] input = cipherBytes;
-        byte[] output = new byte[plainBytes.length];
+        final byte[] input = cipherBytes;
+        final byte[] output = new byte[plainBytes.length];
 
-        CryptoCipher c = Utils.getCipherInstance(transformation, props);
+        final CryptoCipher c = Utils.getCipherInstance(transformation, props);
 
-        Key key = new SecretKeySpec(keyBytes, "AES");
+        final Key key = new SecretKeySpec(keyBytes, "AES");
 
-        GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
+        final GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
         c.init(Cipher.DECRYPT_MODE, key, iv);
         c.updateAAD(aad);
 
@@ -488,19 +488,19 @@ public class GcmCipherTest {
         c.close();
     }
 
-    private void testGcmByteBuffer(String kHex, String pHex, String ivHex, String aadHex,
-                                   String cHex, String tHex) throws Exception {
+    private void testGcmByteBuffer(final String kHex, final String pHex, final String ivHex, final String aadHex,
+                                   final String cHex, final String tHex) throws Exception {
 
-        byte[] keyBytes = DatatypeConverter.parseHexBinary(kHex);
-        byte[] plainText = DatatypeConverter.parseHexBinary(pHex);
-        byte[] ivBytes = DatatypeConverter.parseHexBinary(ivHex);
-        byte[] aad = DatatypeConverter.parseHexBinary(aadHex);
-        byte[] cipherText = DatatypeConverter.parseHexBinary(cHex+tHex);
+        final byte[] keyBytes = DatatypeConverter.parseHexBinary(kHex);
+        final byte[] plainText = DatatypeConverter.parseHexBinary(pHex);
+        final byte[] ivBytes = DatatypeConverter.parseHexBinary(ivHex);
+        final byte[] aad = DatatypeConverter.parseHexBinary(aadHex);
+        final byte[] cipherText = DatatypeConverter.parseHexBinary(cHex+tHex);
 
-        byte[] encOutput = new byte[cipherText.length];
-        byte[] decOutput = new byte[plainText.length];
+        final byte[] encOutput = new byte[cipherText.length];
+        final byte[] decOutput = new byte[plainText.length];
 
-        ByteBuffer bfAAD = ByteBuffer.allocateDirect(aad.length);
+        final ByteBuffer bfAAD = ByteBuffer.allocateDirect(aad.length);
         bfAAD.put(aad);
 
         ByteBuffer bfPlainText;
@@ -509,9 +509,9 @@ public class GcmCipherTest {
         bfCipherText = ByteBuffer.allocateDirect(encOutput.length);
 
         // Encryption -------------------
-        CryptoCipher c = Utils.getCipherInstance(transformation, props);
-        Key key = new SecretKeySpec(keyBytes, "AES");
-        GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
+        final CryptoCipher c = Utils.getCipherInstance(transformation, props);
+        final Key key = new SecretKeySpec(keyBytes, "AES");
+        final GCMParameterSpec iv = new GCMParameterSpec(128, ivBytes);
         c.init(Cipher.ENCRYPT_MODE, key, iv);
 
         bfAAD.flip();
@@ -529,7 +529,7 @@ public class GcmCipherTest {
         c.close();
 
         // Decryption -------------------
-        CryptoCipher dec = Utils.getCipherInstance(transformation, props);
+        final CryptoCipher dec = Utils.getCipherInstance(transformation, props);
         dec.init(Cipher.DECRYPT_MODE, new SecretKeySpec(keyBytes, "AES"),
                 new GCMParameterSpec(128, ivBytes));
         bfAAD.flip();
@@ -547,7 +547,7 @@ public class GcmCipherTest {
 
     private void initTestData() {
 
-        int casesNumber = 4;
+        final int casesNumber = 4;
 
         kHex = new String[casesNumber];
         pHex = new String[casesNumber];
diff --git a/src/test/java/org/apache/commons/crypto/cipher/JceCipherTest.java b/src/test/java/org/apache/commons/crypto/cipher/JceCipherTest.java
index 33eca8b..d5d481e 100644
--- a/src/test/java/org/apache/commons/crypto/cipher/JceCipherTest.java
+++ b/src/test/java/org/apache/commons/crypto/cipher/JceCipherTest.java
@@ -40,7 +40,7 @@ public class JceCipherTest extends AbstractCipherTest {
 
     @BeforeClass
     public static void checkJceUnlimitedStrength() throws NoSuchAlgorithmException {
-        int maxKeyLen = Cipher.getMaxAllowedKeyLength("AES");
+        final int maxKeyLen = Cipher.getMaxAllowedKeyLength("AES");
         Assert.assertTrue(String.format(
                 "Testing requires support for an AES key length of %d, but " +
                 "the detected maximum key length is %d.  This may indicate " +
diff --git a/src/test/java/org/apache/commons/crypto/cipher/OpenSslCipherTest.java b/src/test/java/org/apache/commons/crypto/cipher/OpenSslCipherTest.java
index 98fc325..b77a698 100644
--- a/src/test/java/org/apache/commons/crypto/cipher/OpenSslCipherTest.java
+++ b/src/test/java/org/apache/commons/crypto/cipher/OpenSslCipherTest.java
@@ -59,7 +59,7 @@ public class OpenSslCipherTest extends AbstractCipherTest {
     @Test(timeout = 120000)
     public void testUpdateArguments() throws Exception {
         Assume.assumeTrue(OpenSsl.getLoadingFailureReason() == null);
-        OpenSsl cipher = OpenSsl
+        final OpenSsl cipher = OpenSsl
                 .getInstance("AES/CTR/NoPadding");
         Assert.assertNotNull(cipher);
 
@@ -72,7 +72,7 @@ public class OpenSslCipherTest extends AbstractCipherTest {
         try {
             cipher.update(input, output);
             Assert.fail("Should have failed to accept non-direct buffers.");
-        } catch (IllegalArgumentException e) {
+        } catch (final IllegalArgumentException e) {
             Assert.assertTrue(e.getMessage().contains(
                     "Direct buffers are required"));
         }
@@ -83,7 +83,7 @@ public class OpenSslCipherTest extends AbstractCipherTest {
         try {
             cipher.update(input, output);
             Assert.fail("Failed to check for output buffer size.");
-        } catch (ShortBufferException e) {
+        } catch (final ShortBufferException e) {
             Assert.assertTrue(e.getMessage().contains(
                     "Output buffer is not sufficient"));
         }
@@ -92,20 +92,20 @@ public class OpenSslCipherTest extends AbstractCipherTest {
     @Test(timeout = 120000)
     public void testDoFinalArguments() throws Exception {
         Assume.assumeTrue(OpenSsl.getLoadingFailureReason() == null);
-        OpenSsl cipher = OpenSsl
+        final OpenSsl cipher = OpenSsl
                 .getInstance("AES/CTR/NoPadding");
         Assert.assertNotNull(cipher);
 
         cipher.init(OpenSsl.ENCRYPT_MODE, KEY, new IvParameterSpec(IV));
 
         // Require direct buffer
-        ByteBuffer input = ByteBuffer.allocate(1024);
-        ByteBuffer output = ByteBuffer.allocate(1024);
+        final ByteBuffer input = ByteBuffer.allocate(1024);
+        final ByteBuffer output = ByteBuffer.allocate(1024);
 
         try {
             cipher.doFinal(input, output);
             Assert.fail("Should have failed to accept non-direct buffers.");
-        } catch (IllegalArgumentException e) {
+        } catch (final IllegalArgumentException e) {
             Assert.assertTrue(e.getMessage().contains(
                     "Direct buffer is required"));
         }
@@ -114,7 +114,7 @@ public class OpenSslCipherTest extends AbstractCipherTest {
     @Test(expected = InvalidKeyException.class, timeout = 120000)
     public void testInvalidKey() throws Exception {
         Assume.assumeTrue(OpenSsl.getLoadingFailureReason() == null);
-        OpenSsl cipher = OpenSsl
+        final OpenSsl cipher = OpenSsl
                 .getInstance("AES/CTR/NoPadding");
         Assert.assertNotNull(cipher);
 
@@ -126,7 +126,7 @@ public class OpenSslCipherTest extends AbstractCipherTest {
     @Test(expected = InvalidAlgorithmParameterException.class, timeout = 120000)
     public void testInvalidIV() throws Exception {
         Assume.assumeTrue(OpenSsl.getLoadingFailureReason() == null);
-        OpenSsl cipher = OpenSsl
+        final OpenSsl cipher = OpenSsl
                 .getInstance("AES/CTR/NoPadding");
         Assert.assertNotNull(cipher);
 
@@ -141,7 +141,7 @@ public class OpenSslCipherTest extends AbstractCipherTest {
             try {
                 cipher.update(dummyBuffer(), dummyBuffer());
                 Assert.fail("Should have thrown exception.");
-            } catch (IllegalStateException ise) {
+            } catch (final IllegalStateException ise) {
                 // expected;
             }
 
@@ -153,7 +153,7 @@ public class OpenSslCipherTest extends AbstractCipherTest {
                 cipher.init(OpenSsl.ENCRYPT_MODE, new SecretKeySpec(new byte[1], "AES"),
                     new IvParameterSpec(IV));
                 Assert.fail("Should have thrown exception.");
-            } catch (InvalidKeyException ike) {
+            } catch (final InvalidKeyException ike) {
                 // expected;
             }
 
@@ -165,7 +165,7 @@ public class OpenSslCipherTest extends AbstractCipherTest {
             try {
                 cipher.update(dummyBuffer(), dummyBuffer());
                 Assert.fail("Should have thrown exception.");
-            } catch (IllegalStateException ise) {
+            } catch (final IllegalStateException ise) {
                 // expected;
             }
 
diff --git a/src/test/java/org/apache/commons/crypto/cipher/TestData.java b/src/test/java/org/apache/commons/crypto/cipher/TestData.java
index 3c73ea8..966f15f 100644
--- a/src/test/java/org/apache/commons/crypto/cipher/TestData.java
+++ b/src/test/java/org/apache/commons/crypto/cipher/TestData.java
@@ -144,7 +144,7 @@ public class TestData {
         testData.put("AES/CTR/NoPadding", cipherCTRTests);
     }
 
-    public static String[] getTestData(String transformation) {
+    public static String[] getTestData(final String transformation) {
         return testData.get(transformation);
     }
 }
diff --git a/src/test/java/org/apache/commons/crypto/examples/CipherByteArrayExample.java b/src/test/java/org/apache/commons/crypto/examples/CipherByteArrayExample.java
index 61f13ad..3e78e24 100644
--- a/src/test/java/org/apache/commons/crypto/examples/CipherByteArrayExample.java
+++ b/src/test/java/org/apache/commons/crypto/examples/CipherByteArrayExample.java
@@ -35,31 +35,31 @@ import org.apache.commons.crypto.utils.Utils;
  */
 public class CipherByteArrayExample {
 
-    public static void main(String[] args) throws Exception {
+    public static void main(final String[] args) throws Exception {
 
         final SecretKeySpec key = new SecretKeySpec(getUTF8Bytes("1234567890123456"),"AES");
         final IvParameterSpec iv = new IvParameterSpec(getUTF8Bytes("1234567890123456"));
 
-        Properties properties = new Properties();
+        final Properties properties = new Properties();
         properties.setProperty(CryptoCipherFactory.CLASSES_KEY, CipherProvider.OPENSSL.getClassName());
         //Creates a CryptoCipher instance with the transformation and properties.
         final String transform = "AES/CBC/PKCS5Padding";
-        CryptoCipher encipher = Utils.getCipherInstance(transform, properties);
+        final CryptoCipher encipher = Utils.getCipherInstance(transform, properties);
         System.out.println("Cipher:  " + encipher.getClass().getCanonicalName());
 
         final String sampleInput = "hello world!";
         System.out.println("input:  " + sampleInput);
 
-        byte[] input = getUTF8Bytes(sampleInput);
-        byte[] output = new byte[32];
+        final byte[] input = getUTF8Bytes(sampleInput);
+        final byte[] output = new byte[32];
 
         //Initializes the cipher with ENCRYPT_MODE, key and iv.
         encipher.init(Cipher.ENCRYPT_MODE, key, iv);
         //Continues a multiple-part encryption/decryption operation for byte array.
-        int updateBytes = encipher.update(input, 0, input.length, output, 0);
+        final int updateBytes = encipher.update(input, 0, input.length, output, 0);
         System.out.println(updateBytes);
         //We must call doFinal at the end of encryption/decryption.
-        int finalBytes = encipher.doFinal(input, 0, 0, output, updateBytes);
+        final int finalBytes = encipher.doFinal(input, 0, 0, output, updateBytes);
         System.out.println(finalBytes);
         //Closes the cipher.
         encipher.close();
@@ -68,11 +68,11 @@ public class CipherByteArrayExample {
 
         // Now reverse the process using a different implementation with the same settings
         properties.setProperty(CryptoCipherFactory.CLASSES_KEY, CipherProvider.JCE.getClassName());
-        CryptoCipher decipher = Utils.getCipherInstance(transform, properties);
+        final CryptoCipher decipher = Utils.getCipherInstance(transform, properties);
         System.out.println("Cipher:  " + encipher.getClass().getCanonicalName());
 
         decipher.init(Cipher.DECRYPT_MODE, key, iv);
-        byte [] decoded = new byte[32];
+        final byte [] decoded = new byte[32];
         decipher.doFinal(output, 0, updateBytes + finalBytes, decoded, 0);
 
         System.out.println("output: " + new String(decoded, StandardCharsets.UTF_8));
@@ -84,7 +84,7 @@ public class CipherByteArrayExample {
      * @param input the input string
      * @return UTF8 bytes
      */
-    private static byte[] getUTF8Bytes(String input) {
+    private static byte[] getUTF8Bytes(final String input) {
         return input.getBytes(StandardCharsets.UTF_8);
     }
 
diff --git a/src/test/java/org/apache/commons/crypto/examples/CipherByteBufferExample.java b/src/test/java/org/apache/commons/crypto/examples/CipherByteBufferExample.java
index 9a0f010..7023b2d 100644
--- a/src/test/java/org/apache/commons/crypto/examples/CipherByteBufferExample.java
+++ b/src/test/java/org/apache/commons/crypto/examples/CipherByteBufferExample.java
@@ -34,10 +34,10 @@ import org.apache.commons.crypto.utils.Utils;
  */
 public class CipherByteBufferExample {
 
-    public static void main(String[] args) throws Exception {
+    public static void main(final String[] args) throws Exception {
         final SecretKeySpec key = new SecretKeySpec(getUTF8Bytes("1234567890123456"), "AES");
         final IvParameterSpec iv = new IvParameterSpec(getUTF8Bytes("1234567890123456"));
-        Properties properties = new Properties();
+        final Properties properties = new Properties();
         //Creates a CryptoCipher instance with the transformation and properties.
         final String transform = "AES/CBC/PKCS5Padding";
         final ByteBuffer outBuffer;
@@ -46,7 +46,7 @@ public class CipherByteBufferExample {
         final int finalBytes;
         try (CryptoCipher encipher = Utils.getCipherInstance(transform, properties)) {
 
-            ByteBuffer inBuffer = ByteBuffer.allocateDirect(bufferSize);
+            final ByteBuffer inBuffer = ByteBuffer.allocateDirect(bufferSize);
             outBuffer = ByteBuffer.allocateDirect(bufferSize);
             inBuffer.put(getUTF8Bytes("hello world!"));
 
@@ -66,14 +66,14 @@ public class CipherByteBufferExample {
         }
 
         outBuffer.flip(); // ready for use as decrypt
-        byte [] encoded = new byte[updateBytes + finalBytes];
+        final byte [] encoded = new byte[updateBytes + finalBytes];
         outBuffer.duplicate().get(encoded);
         System.out.println(Arrays.toString(encoded));
 
         // Now reverse the process
         try (CryptoCipher decipher = Utils.getCipherInstance(transform, properties)) {
             decipher.init(Cipher.DECRYPT_MODE, key, iv);
-            ByteBuffer decoded = ByteBuffer.allocateDirect(bufferSize);
+            final ByteBuffer decoded = ByteBuffer.allocateDirect(bufferSize);
             decipher.update(outBuffer, decoded);
             decipher.doFinal(outBuffer, decoded);
             decoded.flip(); // ready for use
@@ -87,7 +87,7 @@ public class CipherByteBufferExample {
      * @param input the input string
      * @return UTF8 bytes
      */
-    private static byte[] getUTF8Bytes(String input) {
+    private static byte[] getUTF8Bytes(final String input) {
         return input.getBytes(StandardCharsets.UTF_8);
     }
 
@@ -97,7 +97,7 @@ public class CipherByteBufferExample {
      * @param buffer input byte buffer
      * @return the converted string
      */
-    private static String asString(ByteBuffer buffer) {
+    private static String asString(final ByteBuffer buffer) {
         final ByteBuffer copy = buffer.duplicate();
         final byte[] bytes = new byte[copy.remaining()];
         copy.get(bytes);
diff --git a/src/test/java/org/apache/commons/crypto/examples/RandomExample.java b/src/test/java/org/apache/commons/crypto/examples/RandomExample.java
index 5505ee5..ccdf320 100644
--- a/src/test/java/org/apache/commons/crypto/examples/RandomExample.java
+++ b/src/test/java/org/apache/commons/crypto/examples/RandomExample.java
@@ -30,12 +30,12 @@ import org.apache.commons.crypto.random.CryptoRandomFactory;
  */
 public class RandomExample {
 
-    public static void main(String []args) throws GeneralSecurityException, IOException {
+    public static void main(final String []args) throws GeneralSecurityException, IOException {
         // Constructs a byte array to store random data.
-        byte[] key = new byte[16];
-        byte[] iv = new byte[32];
+        final byte[] key = new byte[16];
+        final byte[] iv = new byte[32];
 
-        Properties properties = new Properties();
+        final Properties properties = new Properties();
         properties.put(CryptoRandomFactory.CLASSES_KEY,
             CryptoRandomFactory.RandomProvider.OPENSSL.getClassName());
 
diff --git a/src/test/java/org/apache/commons/crypto/examples/StreamExample.java b/src/test/java/org/apache/commons/crypto/examples/StreamExample.java
index 372475a..fe22c43 100644
--- a/src/test/java/org/apache/commons/crypto/examples/StreamExample.java
+++ b/src/test/java/org/apache/commons/crypto/examples/StreamExample.java
@@ -36,16 +36,16 @@ import org.apache.commons.crypto.stream.CryptoOutputStream;
  */
 public class StreamExample {
 
-    public static void main(String []args) throws IOException {
+    public static void main(final String []args) throws IOException {
         final SecretKeySpec key = new SecretKeySpec(getUTF8Bytes("1234567890123456"),"AES");
         final IvParameterSpec iv = new IvParameterSpec(getUTF8Bytes("1234567890123456"));
-        Properties properties = new Properties();
+        final Properties properties = new Properties();
         final String transform = "AES/CBC/PKCS5Padding";
 
-        String input = "hello world!";
+        final String input = "hello world!";
         //Encryption with CryptoOutputStream.
 
-        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
 
         try (CryptoOutputStream cos = new CryptoOutputStream(transform, properties, outputStream, key, iv)) {
             cos.write(getUTF8Bytes(input));
@@ -56,10 +56,10 @@ public class StreamExample {
         System.out.println("Encrypted: "+Arrays.toString(outputStream.toByteArray()));
 
         // Decryption with CryptoInputStream.
-        InputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
+        final InputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
 
         try (CryptoInputStream cis = new CryptoInputStream(transform, properties, inputStream, key, iv)) {
-            byte[] decryptedData = new byte[1024];
+            final byte[] decryptedData = new byte[1024];
             int decryptedLen = 0;
             int i;
             while ((i = cis.read(decryptedData, decryptedLen, decryptedData.length - decryptedLen)) > -1) {
@@ -75,7 +75,7 @@ public class StreamExample {
      * @param input the input string
      * @return UTF8 bytes
      */
-    private static byte[] getUTF8Bytes(String input) {
+    private static byte[] getUTF8Bytes(final String input) {
         return input.getBytes(StandardCharsets.UTF_8);
     }
 
diff --git a/src/test/java/org/apache/commons/crypto/jna/AbstractCipherJnaStreamTest.java b/src/test/java/org/apache/commons/crypto/jna/AbstractCipherJnaStreamTest.java
index 5770a3f..b7ab60f 100644
--- a/src/test/java/org/apache/commons/crypto/jna/AbstractCipherJnaStreamTest.java
+++ b/src/test/java/org/apache/commons/crypto/jna/AbstractCipherJnaStreamTest.java
@@ -56,7 +56,7 @@ public abstract class AbstractCipherJnaStreamTest extends AbstractCipherStreamTe
     @Override
     @Test(timeout = 120000)
     public void testByteBufferWrite() throws Exception {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
         doByteBufferWrite(CIPHER_OPENSSL_JNA, baos, false);
 
         doByteBufferWrite(CIPHER_OPENSSL_JNA, baos, true);
diff --git a/src/test/java/org/apache/commons/crypto/jna/OpenSslJnaCryptoRandomTest.java b/src/test/java/org/apache/commons/crypto/jna/OpenSslJnaCryptoRandomTest.java
index 7c8bb3d..fe23c99 100644
--- a/src/test/java/org/apache/commons/crypto/jna/OpenSslJnaCryptoRandomTest.java
+++ b/src/test/java/org/apache/commons/crypto/jna/OpenSslJnaCryptoRandomTest.java
@@ -38,11 +38,11 @@ public class OpenSslJnaCryptoRandomTest extends AbstractRandomTest {
 
     @Override
     public CryptoRandom getCryptoRandom() throws GeneralSecurityException {
-        Properties props = new Properties();
+        final Properties props = new Properties();
         props.setProperty(
                 CryptoRandomFactory.CLASSES_KEY,
                 OpenSslJnaCryptoRandom.class.getName());
-        CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
+        final CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
         assertTrue(
                 "The CryptoRandom should be: " + OpenSslJnaCryptoRandom.class.getName(),
                 random instanceof OpenSslJnaCryptoRandom);
diff --git a/src/test/java/org/apache/commons/crypto/random/AbstractRandom.java b/src/test/java/org/apache/commons/crypto/random/AbstractRandom.java
index 313f6c8..da1ac04 100644
--- a/src/test/java/org/apache/commons/crypto/random/AbstractRandom.java
+++ b/src/test/java/org/apache/commons/crypto/random/AbstractRandom.java
@@ -25,7 +25,7 @@ import java.util.Properties;
 abstract class AbstractRandom implements CryptoRandom {
 
     // Should fail to instantiate, as it is an abstract class
-    AbstractRandom(Properties props) {
+    AbstractRandom(final Properties props) {
 
     }
 }
diff --git a/src/test/java/org/apache/commons/crypto/random/AbstractRandomTest.java b/src/test/java/org/apache/commons/crypto/random/AbstractRandomTest.java
index 920b7df..786aaec 100644
--- a/src/test/java/org/apache/commons/crypto/random/AbstractRandomTest.java
+++ b/src/test/java/org/apache/commons/crypto/random/AbstractRandomTest.java
@@ -51,7 +51,7 @@ public abstract class AbstractRandomTest {
             final List<Thread> threads = new ArrayList<>(threadCount);
 
             for (int i = 0; i < threadCount; i++) {
-                Thread t = new Thread(() -> {
+                final Thread t = new Thread(() -> {
                     checkRandomBytes(random, 10);
                     checkRandomBytes(random, 1000);
                     checkRandomBytes(random, 100000);
@@ -60,7 +60,7 @@ public abstract class AbstractRandomTest {
                 threads.add(t);
             }
 
-            for (Thread t : threads) {
+            for (final Thread t : threads) {
                 if (!t.getState().equals(State.NEW)) {
                     t.join();
                 }
@@ -73,9 +73,9 @@ public abstract class AbstractRandomTest {
      * Test will timeout if secure random implementation always returns a
      * constant value.
      */
-    private void checkRandomBytes(CryptoRandom random, int len) {
-        byte[] bytes = new byte[len];
-        byte[] bytes1 = new byte[len];
+    private void checkRandomBytes(final CryptoRandom random, final int len) {
+        final byte[] bytes = new byte[len];
+        final byte[] bytes1 = new byte[len];
         random.nextBytes(bytes);
         random.nextBytes(bytes1);
 
diff --git a/src/test/java/org/apache/commons/crypto/random/CryptoRandomFactoryTest.java b/src/test/java/org/apache/commons/crypto/random/CryptoRandomFactoryTest.java
index f4f1397..e6747cb 100644
--- a/src/test/java/org/apache/commons/crypto/random/CryptoRandomFactoryTest.java
+++ b/src/test/java/org/apache/commons/crypto/random/CryptoRandomFactoryTest.java
@@ -42,8 +42,8 @@ public class CryptoRandomFactoryTest {
 
     @Test
     public void testDefaultRandom() throws GeneralSecurityException {
-        Properties props = new Properties();
-        CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
+        final Properties props = new Properties();
+        final CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
         final String name = random.getClass().getName();
         if (OpenSslCryptoRandom.isNativeCodeEnabled()) {
             Assert.assertEquals(OpenSslCryptoRandom.class.getName(), name);
@@ -56,11 +56,11 @@ public class CryptoRandomFactoryTest {
     public void testGetOSRandom() throws GeneralSecurityException {
         // Windows does not have a /dev/random device
         Assume.assumeTrue(!System.getProperty("os.name").contains("Windows"));
-        Properties props = new Properties();
+        final Properties props = new Properties();
         props.setProperty(
             CryptoRandomFactory.CLASSES_KEY,
             CryptoRandomFactory.RandomProvider.OS.getClassName());
-        CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
+        final CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
 
         Assert.assertEquals(OsCryptoRandom.class.getName(), random.getClass()
             .getName());
@@ -68,11 +68,11 @@ public class CryptoRandomFactoryTest {
 
     @Test
     public void testFullClassName() throws GeneralSecurityException {
-        Properties props = new Properties();
+        final Properties props = new Properties();
         props.setProperty(
             CryptoRandomFactory.CLASSES_KEY,
             JavaCryptoRandom.class.getName());
-        CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
+        final CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
 
         Assert.assertEquals(JavaCryptoRandom.class.getName(), random.getClass()
             .getName());
@@ -80,7 +80,7 @@ public class CryptoRandomFactoryTest {
 
     @Test(expected = GeneralSecurityException.class)
     public void testInvalidRandom() throws GeneralSecurityException {
-        Properties properties = new Properties();
+        final Properties properties = new Properties();
         properties.setProperty(
             CryptoRandomFactory.CLASSES_KEY,
             "InvalidCipherName");
@@ -89,12 +89,12 @@ public class CryptoRandomFactoryTest {
 
     @Test
     public void testAbstractRandom() {
-        Properties props = new Properties();
+        final Properties props = new Properties();
         props.setProperty(CryptoRandomFactory.CLASSES_KEY, AbstractRandom.class.getName());
         try {
             CryptoRandomFactory.getCryptoRandom(props);
             Assert.fail("Expected GeneralSecurityException");
-        } catch (GeneralSecurityException e) {
+        } catch (final GeneralSecurityException e) {
             final String message = e.getMessage();
             Assert.assertTrue(message, message.contains("InstantiationException"));
         }
@@ -103,12 +103,12 @@ public class CryptoRandomFactoryTest {
 
     @Test
     public void testDummmyRandom() {
-        Properties props = new Properties();
+        final Properties props = new Properties();
         props.setProperty(CryptoRandomFactory.CLASSES_KEY, DummyRandom.class.getName());
         try {
             CryptoRandomFactory.getCryptoRandom(props);
             Assert.fail("Expected GeneralSecurityException");
-        } catch (GeneralSecurityException e) {
+        } catch (final GeneralSecurityException e) {
             final String message = e.getMessage();
             Assert.assertTrue(message, message.contains("NoSuchMethodException"));
         }
@@ -125,12 +125,12 @@ public class CryptoRandomFactoryTest {
 
     @Test
     public void testFailingRandom() {
-        Properties props = new Properties();
+        final Properties props = new Properties();
         props.setProperty(CryptoRandomFactory.CLASSES_KEY, FailingRandom.class.getName());
         try {
             CryptoRandomFactory.getCryptoRandom(props);
             Assert.fail("Expected GeneralSecurityException");
-        } catch (GeneralSecurityException e) {
+        } catch (final GeneralSecurityException e) {
             Throwable cause = e.getCause();
             Assert.assertEquals(RuntimeException.class, cause.getClass());
             cause = cause.getCause();
diff --git a/src/test/java/org/apache/commons/crypto/random/DummyRandom.java b/src/test/java/org/apache/commons/crypto/random/DummyRandom.java
index 3e1f07d..399b03b 100644
--- a/src/test/java/org/apache/commons/crypto/random/DummyRandom.java
+++ b/src/test/java/org/apache/commons/crypto/random/DummyRandom.java
@@ -31,7 +31,7 @@ class DummyRandom implements CryptoRandom {
     }
 
     @Override
-    public void nextBytes(byte[] bytes) {
+    public void nextBytes(final byte[] bytes) {
     }
 
 }
diff --git a/src/test/java/org/apache/commons/crypto/random/FailingRandom.java b/src/test/java/org/apache/commons/crypto/random/FailingRandom.java
index 14e3935..e362076 100644
--- a/src/test/java/org/apache/commons/crypto/random/FailingRandom.java
+++ b/src/test/java/org/apache/commons/crypto/random/FailingRandom.java
@@ -23,7 +23,7 @@ import java.util.Properties;
 class FailingRandom implements CryptoRandom {
 
     // Should fail with NoSuchMethodException
-    FailingRandom(Properties props) {
+    FailingRandom(final Properties props) {
         NoSuchMethod();
     }
 
@@ -32,7 +32,7 @@ class FailingRandom implements CryptoRandom {
     }
 
     @Override
-    public void nextBytes(byte[] bytes) {
+    public void nextBytes(final byte[] bytes) {
     }
 
     public static native void NoSuchMethod();
diff --git a/src/test/java/org/apache/commons/crypto/random/JavaCryptoRandomTest.java b/src/test/java/org/apache/commons/crypto/random/JavaCryptoRandomTest.java
index 708c6bb..19afa0e 100644
--- a/src/test/java/org/apache/commons/crypto/random/JavaCryptoRandomTest.java
+++ b/src/test/java/org/apache/commons/crypto/random/JavaCryptoRandomTest.java
@@ -26,11 +26,11 @@ public class JavaCryptoRandomTest extends AbstractRandomTest {
 
     @Override
     public CryptoRandom getCryptoRandom() throws GeneralSecurityException {
-        Properties props = new Properties();
+        final Properties props = new Properties();
         props.setProperty(
                 CryptoRandomFactory.CLASSES_KEY,
                 JavaCryptoRandom.class.getName());
-        CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
+        final CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
         assertTrue(
                 "The CryptoRandom should be: " + JavaCryptoRandom.class.getName(),
                 random instanceof JavaCryptoRandom);
diff --git a/src/test/java/org/apache/commons/crypto/random/OpenSslCryptoRandomTest.java b/src/test/java/org/apache/commons/crypto/random/OpenSslCryptoRandomTest.java
index a2a9aa7..78fa226 100644
--- a/src/test/java/org/apache/commons/crypto/random/OpenSslCryptoRandomTest.java
+++ b/src/test/java/org/apache/commons/crypto/random/OpenSslCryptoRandomTest.java
@@ -30,11 +30,11 @@ public class OpenSslCryptoRandomTest extends AbstractRandomTest {
     @Override
     public CryptoRandom getCryptoRandom() throws GeneralSecurityException {
         Assume.assumeTrue(Crypto.isNativeCodeLoaded());
-        Properties props = new Properties();
+        final Properties props = new Properties();
         props.setProperty(
                 CryptoRandomFactory.CLASSES_KEY,
                 OpenSslCryptoRandom.class.getName());
-        CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
+        final CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
         assertTrue(
                 "The CryptoRandom should be: " + OpenSslCryptoRandom.class.getName(),
                 random instanceof OpenSslCryptoRandom);
diff --git a/src/test/java/org/apache/commons/crypto/random/OsCryptoRandomTest.java b/src/test/java/org/apache/commons/crypto/random/OsCryptoRandomTest.java
index 57f0e08..16f1ee1 100644
--- a/src/test/java/org/apache/commons/crypto/random/OsCryptoRandomTest.java
+++ b/src/test/java/org/apache/commons/crypto/random/OsCryptoRandomTest.java
@@ -34,11 +34,11 @@ public class OsCryptoRandomTest extends AbstractRandomTest {
     public CryptoRandom getCryptoRandom() throws GeneralSecurityException {
         // Windows does not have a /dev/random device
         Assume.assumeTrue(!System.getProperty("os.name").contains("Windows"));
-        Properties props = new Properties();
+        final Properties props = new Properties();
         props.setProperty(
                 CryptoRandomFactory.CLASSES_KEY,
                 OsCryptoRandom.class.getName());
-        CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
+        final CryptoRandom random = CryptoRandomFactory.getCryptoRandom(props);
         assertTrue(
                 "The CryptoRandom should be: " + OsCryptoRandom.class.getName(),
                 random instanceof OsCryptoRandom);
@@ -47,14 +47,14 @@ public class OsCryptoRandomTest extends AbstractRandomTest {
 
     @Test
     public void testInvalidRandom() {
-        Properties props = new Properties();
+        final Properties props = new Properties();
         props.setProperty(CryptoRandomFactory.CLASSES_KEY, OsCryptoRandom.class.getName());
         // Invalid device
         props.setProperty(CryptoRandomFactory.DEVICE_FILE_PATH_KEY, "");
         try {
             CryptoRandomFactory.getCryptoRandom(props);
             fail("Expected GeneralSecurityException");
-        } catch (GeneralSecurityException e) {
+        } catch (final GeneralSecurityException e) {
             Throwable cause;
             cause = e.getCause();
             Assert.assertEquals(RuntimeException.class, cause.getClass());
diff --git a/src/test/java/org/apache/commons/crypto/stream/AbstractCipherStreamTest.java b/src/test/java/org/apache/commons/crypto/stream/AbstractCipherStreamTest.java
index 4b0be67..5a3bbbf 100644
--- a/src/test/java/org/apache/commons/crypto/stream/AbstractCipherStreamTest.java
+++ b/src/test/java/org/apache/commons/crypto/stream/AbstractCipherStreamTest.java
@@ -44,9 +44,9 @@ import org.junit.Test;
 public abstract class AbstractCipherStreamTest {
 
     private final int dataLen = 20000;
-    private byte[] data = new byte[dataLen];
+    private final byte[] data = new byte[dataLen];
     private byte[] encData;
-    private Properties props = new Properties();
+    private final Properties props = new Properties();
     protected byte[] key = new byte[16];
     protected byte[] iv = new byte[16];
     protected int count = 10000;
@@ -59,7 +59,7 @@ public abstract class AbstractCipherStreamTest {
 
     @Before
     public void before() throws IOException {
-        Random random = new SecureRandom();
+        final Random random = new SecureRandom();
         random.nextBytes(data);
         random.nextBytes(key);
         random.nextBytes(iv);
@@ -90,7 +90,7 @@ public abstract class AbstractCipherStreamTest {
     /** Test byte buffer write. */
     @Test(timeout = 120000)
     public void testByteBufferWrite() throws Exception {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
         doByteBufferWrite(AbstractCipherTest.JCE_CIPHER_CLASSNAME, baos, false);
         doByteBufferWrite(AbstractCipherTest.OPENSSL_CIPHER_CLASSNAME, baos, false);
 
@@ -98,7 +98,7 @@ public abstract class AbstractCipherStreamTest {
         doByteBufferWrite(AbstractCipherTest.OPENSSL_CIPHER_CLASSNAME, baos, true);
     }
 
-    protected void doSkipTest(String cipherClass, boolean withChannel)
+    protected void doSkipTest(final String cipherClass, final boolean withChannel)
             throws IOException {
         if (AbstractCipherTest.OPENSSL_CIPHER_CLASSNAME.equals(cipherClass)) {
             if (!Crypto.isNativeCodeLoaded()) {
@@ -108,23 +108,23 @@ public abstract class AbstractCipherStreamTest {
         try (InputStream in = getCryptoInputStream(
                 new ByteArrayInputStream(encData), getCipher(cipherClass),
                 defaultBufferSize, iv, withChannel)) {
-            byte[] result = new byte[dataLen];
-            int n1 = readAll(in, result, 0, dataLen / 3);
+            final byte[] result = new byte[dataLen];
+            final int n1 = readAll(in, result, 0, dataLen / 3);
 
             long skipped = in.skip(dataLen / 3);
-            int n2 = readAll(in, result, 0, dataLen);
+            final int n2 = readAll(in, result, 0, dataLen);
 
             Assert.assertEquals(dataLen, n1 + skipped + n2);
-            byte[] readData = new byte[n2];
+            final byte[] readData = new byte[n2];
             System.arraycopy(result, 0, readData, 0, n2);
-            byte[] expectedData = new byte[n2];
+            final byte[] expectedData = new byte[n2];
             System.arraycopy(data, dataLen - n2, expectedData, 0, n2);
             Assert.assertArrayEquals(readData, expectedData);
 
             try {
                 skipped = in.skip(-3);
                 Assert.fail("Skip Negative length should fail.");
-            } catch (IllegalArgumentException e) {
+            } catch (final IllegalArgumentException e) {
                 Assert.assertTrue(e.getMessage().contains("Negative skip length"));
             }
 
@@ -134,7 +134,7 @@ public abstract class AbstractCipherStreamTest {
         }
     }
 
-    protected void doByteBufferRead(String cipherClass, boolean withChannel)
+    protected void doByteBufferRead(final String cipherClass, final boolean withChannel)
             throws Exception {
         if (AbstractCipherTest.OPENSSL_CIPHER_CLASSNAME.equals(cipherClass)) {
             if (!Crypto.isNativeCodeLoaded()) {
@@ -199,30 +199,30 @@ public abstract class AbstractCipherStreamTest {
         in.close();
     }
 
-    protected void doByteBufferWrite(String cipherClass,
-            ByteArrayOutputStream baos, boolean withChannel) throws Exception {
+    protected void doByteBufferWrite(final String cipherClass,
+            final ByteArrayOutputStream baos, final boolean withChannel) throws Exception {
         if (AbstractCipherTest.OPENSSL_CIPHER_CLASSNAME.equals(cipherClass)) {
             if (!Crypto.isNativeCodeLoaded()) {
                 return; // Skip this test if no JNI
             }
         }
         baos.reset();
-        CryptoOutputStream out = getCryptoOutputStream(baos,
+        final CryptoOutputStream out = getCryptoOutputStream(baos,
                 getCipher(cipherClass), defaultBufferSize, iv, withChannel);
         ByteBuffer buf = ByteBuffer.allocateDirect(dataLen / 2);
         buf.put(data, 0, dataLen / 2);
         buf.flip();
-        int n1 = out.write(buf);
+        final int n1 = out.write(buf);
 
         buf.clear();
         buf.put(data, n1, dataLen / 3);
         buf.flip();
-        int n2 = out.write(buf);
+        final int n2 = out.write(buf);
 
         buf.clear();
         buf.put(data, n1 + n2, dataLen - n1 - n2);
         buf.flip();
-        int n3 = out.write(buf);
+        final int n3 = out.write(buf);
 
         Assert.assertEquals(dataLen, n1 + n2 + n3);
 
@@ -236,16 +236,16 @@ public abstract class AbstractCipherStreamTest {
         }
     }
 
-    private void byteBufferReadCheck(InputStream in, ByteBuffer buf, int bufPos)
+    private void byteBufferReadCheck(final InputStream in, final ByteBuffer buf, final int bufPos)
             throws Exception {
         buf.position(bufPos);
-        int n = ((ReadableByteChannel) in).read(buf);
+        final int n = ((ReadableByteChannel) in).read(buf);
         Assert.assertEquals(bufPos + n, buf.position());
-        byte[] readData = new byte[n];
+        final byte[] readData = new byte[n];
         buf.rewind();
         buf.position(bufPos);
         buf.get(readData);
-        byte[] expectedData = new byte[n];
+        final byte[] expectedData = new byte[n];
         System.arraycopy(data, 0, expectedData, 0, n);
         Assert.assertArrayEquals(readData, expectedData);
     }
@@ -256,11 +256,11 @@ public abstract class AbstractCipherStreamTest {
             cipher = (CryptoCipher) ReflectionUtils.newInstance(
                     ReflectionUtils.getClassByName(AbstractCipherTest.JCE_CIPHER_CLASSNAME), props,
                     transformation);
-        } catch (ClassNotFoundException cnfe) {
+        } catch (final ClassNotFoundException cnfe) {
             throw new IOException("Illegal crypto cipher!");
         }
 
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
         try (OutputStream out = new CryptoOutputStream(baos, cipher,
                 defaultBufferSize, new SecretKeySpec(key, "AES"),
                 new IvParameterSpec(iv))) {
@@ -270,8 +270,8 @@ public abstract class AbstractCipherStreamTest {
         encData = baos.toByteArray();
     }
 
-    protected CryptoInputStream getCryptoInputStream(ByteArrayInputStream bais,
-            CryptoCipher cipher, int bufferSize, byte[] iv, boolean withChannel)
+    protected CryptoInputStream getCryptoInputStream(final ByteArrayInputStream bais,
+            final CryptoCipher cipher, final int bufferSize, final byte[] iv, final boolean withChannel)
             throws IOException {
         if (withChannel) {
             return new CryptoInputStream(Channels.newChannel(bais), cipher,
@@ -283,8 +283,8 @@ public abstract class AbstractCipherStreamTest {
     }
 
     protected CryptoOutputStream getCryptoOutputStream(
-            ByteArrayOutputStream baos, CryptoCipher cipher, int bufferSize,
-            byte[] iv, boolean withChannel) throws IOException {
+            final ByteArrayOutputStream baos, final CryptoCipher cipher, final int bufferSize,
+            final byte[] iv, final boolean withChannel) throws IOException {
         if (withChannel) {
             return new CryptoOutputStream(Channels.newChannel(baos), cipher,
                     bufferSize, new SecretKeySpec(key, "AES"),
@@ -294,7 +294,7 @@ public abstract class AbstractCipherStreamTest {
                 new SecretKeySpec(key, "AES"), new IvParameterSpec(iv));
     }
 
-    private int readAll(InputStream in, byte[] b, int offset, int len)
+    private int readAll(final InputStream in, final byte[] b, final int offset, final int len)
             throws IOException {
         int n = 0;
         int total = 0;
@@ -309,12 +309,12 @@ public abstract class AbstractCipherStreamTest {
         return total;
     }
 
-    protected CryptoCipher getCipher(String cipherClass) throws IOException {
+    protected CryptoCipher getCipher(final String cipherClass) throws IOException {
         try {
             return (CryptoCipher) ReflectionUtils.newInstance(
                     ReflectionUtils.getClassByName(cipherClass), props,
                     transformation);
-        } catch (ClassNotFoundException cnfe) {
+        } catch (final ClassNotFoundException cnfe) {
             throw new IOException("Illegal crypto cipher!");
         }
     }
@@ -337,15 +337,15 @@ public abstract class AbstractCipherStreamTest {
         doReadWriteTest(count, AbstractCipherTest.OPENSSL_CIPHER_CLASSNAME, AbstractCipherTest.JCE_CIPHER_CLASSNAME, iv);
     }
 
-    protected void doReadWriteTest(int count, String encCipherClass,
-            String decCipherClass, byte[] iv) throws IOException {
+    protected void doReadWriteTest(final int count, final String encCipherClass,
+            final String decCipherClass, final byte[] iv) throws IOException {
         doReadWriteTestForInputStream(count, encCipherClass, decCipherClass, iv);
         doReadWriteTestForReadableByteChannel(count, encCipherClass,
                 decCipherClass, iv);
     }
 
-    private void doReadWriteTestForInputStream(int count,
-            String encCipherClass, String decCipherClass, byte[] iv)
+    private void doReadWriteTestForInputStream(final int count,
+            final String encCipherClass, final String decCipherClass, final byte[] iv)
             throws IOException {
         if (AbstractCipherTest.OPENSSL_CIPHER_CLASSNAME.equals(encCipherClass)
                 ||
@@ -355,16 +355,16 @@ public abstract class AbstractCipherStreamTest {
             }
         }
         // Created a cipher object of type encCipherClass;
-        CryptoCipher encCipher = getCipher(encCipherClass);
+        final CryptoCipher encCipher = getCipher(encCipherClass);
 
         // Generate data
-        SecureRandom random = new SecureRandom();
-        byte[] originalData = new byte[count];
-        byte[] decryptedData = new byte[count];
+        final SecureRandom random = new SecureRandom();
+        final byte[] originalData = new byte[count];
+        final byte[] decryptedData = new byte[count];
         random.nextBytes(originalData);
 
         // Encrypt data
-        ByteArrayOutputStream encryptedData = new ByteArrayOutputStream();
+        final ByteArrayOutputStream encryptedData = new ByteArrayOutputStream();
         try (CryptoOutputStream out = getCryptoOutputStream(encryptedData,
                 encCipher, defaultBufferSize, iv, false)) {
             out.write(originalData, 0, originalData.length);
@@ -372,7 +372,7 @@ public abstract class AbstractCipherStreamTest {
         }
 
         // Created a cipher object of type decCipherClass;
-        CryptoCipher decCipher = getCipher(decCipherClass);
+        final CryptoCipher decCipher = getCipher(decCipherClass);
 
         // Decrypt data
         CryptoInputStream in = getCryptoInputStream(new ByteArrayInputStream(
@@ -383,7 +383,7 @@ public abstract class AbstractCipherStreamTest {
         int remainingToRead = count;
         int offset = 0;
         while (remainingToRead > 0) {
-            int n = in.read(decryptedData, offset, decryptedData.length
+            final int n = in.read(decryptedData, offset, decryptedData.length
                     - offset);
             if (n >= 0) {
                 remainingToRead -= n;
@@ -400,7 +400,7 @@ public abstract class AbstractCipherStreamTest {
                 decCipher, defaultBufferSize, iv, false);
 
         // Check
-        DataInputStream originalIn = new DataInputStream(
+        final DataInputStream originalIn = new DataInputStream(
                 new BufferedInputStream(new ByteArrayInputStream(originalData)));
         int expected;
         do {
@@ -412,8 +412,8 @@ public abstract class AbstractCipherStreamTest {
         // Completed checking records;
     }
 
-    private void doReadWriteTestForReadableByteChannel(int count,
-            String encCipherClass, String decCipherClass, byte[] iv)
+    private void doReadWriteTestForReadableByteChannel(final int count,
+            final String encCipherClass, final String decCipherClass, final byte[] iv)
             throws IOException {
         if (AbstractCipherTest.OPENSSL_CIPHER_CLASSNAME.equals(encCipherClass)
                 ||
@@ -423,16 +423,16 @@ public abstract class AbstractCipherStreamTest {
             }
         }
         // Creates a cipher object of type encCipherClass;
-        CryptoCipher encCipher = getCipher(encCipherClass);
+        final CryptoCipher encCipher = getCipher(encCipherClass);
 
         // Generate data
-        SecureRandom random = new SecureRandom();
-        byte[] originalData = new byte[count];
-        byte[] decryptedData = new byte[count];
+        final SecureRandom random = new SecureRandom();
+        final byte[] originalData = new byte[count];
+        final byte[] decryptedData = new byte[count];
         random.nextBytes(originalData);
 
         // Encrypt data
-        ByteArrayOutputStream encryptedData = new ByteArrayOutputStream();
+        final ByteArrayOutputStream encryptedData = new ByteArrayOutputStream();
         try (CryptoOutputStream out = getCryptoOutputStream(encryptedData,
                 encCipher, defaultBufferSize, iv, true)) {
             out.write(originalData, 0, originalData.length);
@@ -440,7 +440,7 @@ public abstract class AbstractCipherStreamTest {
         }
 
         // Creates a cipher object of type decCipherClass
-        CryptoCipher decCipher = getCipher(decCipherClass);
+        final CryptoCipher decCipher = getCipher(decCipherClass);
 
         // Decrypt data
         CryptoInputStream in = getCryptoInputStream(new ByteArrayInputStream(
@@ -451,7 +451,7 @@ public abstract class AbstractCipherStreamTest {
         int remainingToRead = count;
         int offset = 0;
         while (remainingToRead > 0) {
-            int n = in.read(decryptedData, offset, decryptedData.length
+            final int n = in.read(decryptedData, offset, decryptedData.length
                     - offset);
             if (n >= 0) {
                 remainingToRead -= n;
@@ -468,7 +468,7 @@ public abstract class AbstractCipherStreamTest {
                 decCipher, defaultBufferSize, iv, true);
 
         // Check
-        DataInputStream originalIn = new DataInputStream(
+        final DataInputStream originalIn = new DataInputStream(
                 new BufferedInputStream(new ByteArrayInputStream(originalData)));
         int expected;
         do {
diff --git a/src/test/java/org/apache/commons/crypto/stream/CtrCryptoStreamTest.java b/src/test/java/org/apache/commons/crypto/stream/CtrCryptoStreamTest.java
index 7b9c12b..a2ee57d 100644
--- a/src/test/java/org/apache/commons/crypto/stream/CtrCryptoStreamTest.java
+++ b/src/test/java/org/apache/commons/crypto/stream/CtrCryptoStreamTest.java
@@ -33,8 +33,8 @@ public class CtrCryptoStreamTest extends AbstractCipherStreamTest {
 
     @Override
     protected CtrCryptoInputStream getCryptoInputStream(
-            ByteArrayInputStream bais, CryptoCipher cipher, int bufferSize,
-            byte[] iv, boolean withChannel) throws IOException {
+            final ByteArrayInputStream bais, final CryptoCipher cipher, final int bufferSize,
+            final byte[] iv, final boolean withChannel) throws IOException {
         if (withChannel) {
             return new CtrCryptoInputStream(Channels.newChannel(bais), cipher,
                     bufferSize, key, iv);
@@ -44,8 +44,8 @@ public class CtrCryptoStreamTest extends AbstractCipherStreamTest {
 
     @Override
     protected CtrCryptoOutputStream getCryptoOutputStream(
-            ByteArrayOutputStream baos, CryptoCipher cipher, int bufferSize,
-            byte[] iv, boolean withChannel) throws IOException {
+            final ByteArrayOutputStream baos, final CryptoCipher cipher, final int bufferSize,
+            final byte[] iv, final boolean withChannel) throws IOException {
         if (withChannel) {
             return new CtrCryptoOutputStream(Channels.newChannel(baos), cipher,
                     bufferSize, key, iv);
diff --git a/src/test/java/org/apache/commons/crypto/stream/PositionedCryptoInputStreamTest.java b/src/test/java/org/apache/commons/crypto/stream/PositionedCryptoInputStreamTest.java
index c8d27ac..9931b63 100644
--- a/src/test/java/org/apache/commons/crypto/stream/PositionedCryptoInputStreamTest.java
+++ b/src/test/java/org/apache/commons/crypto/stream/PositionedCryptoInputStreamTest.java
@@ -43,23 +43,23 @@ import java.util.Random;
 public class PositionedCryptoInputStreamTest {
 
     private final int dataLen = 20000;
-    private byte[] testData = new byte[dataLen];
+    private final byte[] testData = new byte[dataLen];
     private byte[] encData;
-    private Properties props = new Properties();
-    private byte[] key = new byte[16];
-    private byte[] iv = new byte[16];
-    private int bufferSize = 2048;
-    private int bufferSizeLess = bufferSize - 1;
-    private int bufferSizeMore = bufferSize + 1;
-    private int length = 1024;
-    private int lengthLess = length - 1;
-    private int lengthMore = length + 1;
-
-    private String transformation = "AES/CTR/NoPadding";
+    private final Properties props = new Properties();
+    private final byte[] key = new byte[16];
+    private final byte[] iv = new byte[16];
+    private final int bufferSize = 2048;
+    private final int bufferSizeLess = bufferSize - 1;
+    private final int bufferSizeMore = bufferSize + 1;
+    private final int length = 1024;
+    private final int lengthLess = length - 1;
+    private final int lengthMore = length + 1;
+
+    private final String transformation = "AES/CTR/NoPadding";
 
     @Before
     public void before() throws IOException {
-        Random random = new SecureRandom();
+        final Random random = new SecureRandom();
         random.nextBytes(testData);
         random.nextBytes(key);
         random.nextBytes(iv);
@@ -72,13 +72,13 @@ public class PositionedCryptoInputStreamTest {
             cipher = (CryptoCipher) ReflectionUtils.newInstance(
                     ReflectionUtils.getClassByName(AbstractCipherTest.JCE_CIPHER_CLASSNAME), props,
                     transformation);
-        } catch (ClassNotFoundException cnfe) {
+        } catch (final ClassNotFoundException cnfe) {
             throw new IOException("Illegal crypto cipher!");
         }
 
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
         // encryption data
-        OutputStream out = new CryptoOutputStream(baos, cipher, bufferSize,
+        final OutputStream out = new CryptoOutputStream(baos, cipher, bufferSize,
                 new SecretKeySpec(key, "AES"), new IvParameterSpec(iv));
         out.write(testData);
         out.flush();
@@ -87,7 +87,7 @@ public class PositionedCryptoInputStreamTest {
     }
 
     private PositionedCryptoInputStream getCryptoInputStream(
-            CryptoCipher cipher, int bufferSize) throws IOException {
+            final CryptoCipher cipher, final int bufferSize) throws IOException {
         return new PositionedCryptoInputStream(props, new PositionedInputForTest(
                 Arrays.copyOf(encData, encData.length)), cipher, bufferSize,
                 key, iv, 0);
@@ -104,7 +104,7 @@ public class PositionedCryptoInputStreamTest {
         testCipher(AbstractCipherTest.OPENSSL_CIPHER_CLASSNAME);
     }
 
-    protected void testCipher(String cipherClass) throws Exception {
+    protected void testCipher(final String cipherClass) throws Exception {
         doPositionedReadTests(cipherClass);
         doReadFullyTests(cipherClass);
         doSeekTests(cipherClass);
@@ -113,17 +113,17 @@ public class PositionedCryptoInputStreamTest {
 
     // when there are multiple positioned read actions and one read action,
     // they will not interfere each other.
-    private void doMultipleReadTest(String cipherClass) throws Exception {
+    private void doMultipleReadTest(final String cipherClass) throws Exception {
         try (PositionedCryptoInputStream in = getCryptoInputStream(getCipher(cipherClass), bufferSize)) {
             int position = 0;
             while (in.available() > 0) {
-                ByteBuffer buf = ByteBuffer.allocate(length);
-                byte[] bytes1 = new byte[length];
-                byte[] bytes2 = new byte[lengthLess];
+                final ByteBuffer buf = ByteBuffer.allocate(length);
+                final byte[] bytes1 = new byte[length];
+                final byte[] bytes2 = new byte[lengthLess];
                 // do the read and position read
-                int pn1 = in.read(position, bytes1, 0, length);
-                int n = in.read(buf);
-                int pn2 = in.read(position, bytes2, 0, lengthLess);
+                final int pn1 = in.read(position, bytes1, 0, length);
+                final int n = in.read(buf);
+                final int pn2 = in.read(position, bytes2, 0, lengthLess);
 
                 // verify the result
                 if (pn1 > 0) {
@@ -144,7 +144,7 @@ public class PositionedCryptoInputStreamTest {
         }
     }
 
-    private void doPositionedReadTests(String cipherClass) throws Exception {
+    private void doPositionedReadTests(final String cipherClass) throws Exception {
         // test with different bufferSize when position = 0
         testPositionedReadLoop(cipherClass, 0, length, bufferSize, dataLen);
         testPositionedReadLoop(cipherClass, 0, length, bufferSizeLess, dataLen);
@@ -161,7 +161,7 @@ public class PositionedCryptoInputStreamTest {
         testPositionedReadNone(cipherClass, dataLen, length, bufferSize);
     }
 
-    private void doReadFullyTests(String cipherClass) throws Exception {
+    private void doReadFullyTests(final String cipherClass) throws Exception {
         // test with different bufferSize when position = 0
         testReadFullyLoop(cipherClass, 0, length, bufferSize, dataLen);
         testReadFullyLoop(cipherClass, 0, length, bufferSizeLess, dataLen);
@@ -177,7 +177,7 @@ public class PositionedCryptoInputStreamTest {
                 bufferSize);
     }
 
-    private void doSeekTests(String cipherClass) throws Exception {
+    private void doSeekTests(final String cipherClass) throws Exception {
         // test with different length when position = 0
         testSeekLoop(cipherClass, 0, length, bufferSize);
         testSeekLoop(cipherClass, 0, lengthLess, bufferSize);
@@ -188,13 +188,13 @@ public class PositionedCryptoInputStreamTest {
         testSeekFailed(cipherClass, -1, bufferSize);
     }
 
-    private void testSeekLoop(String cipherClass, int position, int length,
-            int bufferSize) throws Exception {
+    private void testSeekLoop(final String cipherClass, int position, final int length,
+            final int bufferSize) throws Exception {
         try (PositionedCryptoInputStream in = getCryptoInputStream(getCipher(cipherClass), bufferSize)) {
             while (in.available() > 0) {
                 in.seek(position);
-                ByteBuffer buf = ByteBuffer.allocate(length);
-                int n = in.read(buf);
+                final ByteBuffer buf = ByteBuffer.allocate(length);
+                final int n = in.read(buf);
                 if (n > 0) {
                     compareByteArray(testData, position, buf.array(), n);
                     position += n;
@@ -206,25 +206,25 @@ public class PositionedCryptoInputStreamTest {
     }
 
     // test for the out of index position, eg, -1.
-    private void testSeekFailed(String cipherClass, int position, int bufferSize)
+    private void testSeekFailed(final String cipherClass, final int position, final int bufferSize)
             throws Exception {
-        PositionedCryptoInputStream in = getCryptoInputStream(
+        final PositionedCryptoInputStream in = getCryptoInputStream(
                 getCipher(cipherClass), bufferSize);
         try {
             in.seek(position);
             Assert.fail("Excepted exception for cannot seek to negative offset.");
-        } catch (IllegalArgumentException iae) {
+        } catch (final IllegalArgumentException iae) {
         }
         in.close();
     }
 
-    private void testPositionedReadLoop(String cipherClass, int position,
-            int length, int bufferSize, int total) throws Exception {
+    private void testPositionedReadLoop(final String cipherClass, int position,
+            final int length, final int bufferSize, final int total) throws Exception {
         try (PositionedCryptoInputStream in = getCryptoInputStream(getCipher(cipherClass), bufferSize)) {
             // do the position read until the end of data
             while (position < total) {
-                byte[] bytes = new byte[length];
-                int n = in.read(position, bytes, 0, length);
+                final byte[] bytes = new byte[length];
+                final int n = in.read(position, bytes, 0, length);
                 if (n >= 0) {
                     compareByteArray(testData, position, bytes, n);
                     position += n;
@@ -236,23 +236,23 @@ public class PositionedCryptoInputStreamTest {
     }
 
     // test for the out of index position, eg, -1.
-    private void testPositionedReadNone(String cipherClass, int position,
-            int length, int bufferSize) throws Exception {
+    private void testPositionedReadNone(final String cipherClass, final int position,
+            final int length, final int bufferSize) throws Exception {
         try (PositionedCryptoInputStream in = getCryptoInputStream(getCipher(cipherClass), bufferSize)) {
-            byte[] bytes = new byte[length];
-            int n = in.read(position, bytes, 0, length);
+            final byte[] bytes = new byte[length];
+            final int n = in.read(position, bytes, 0, length);
             Assert.assertEquals(n, -1);
         }
     }
 
-    private void testReadFullyLoop(String cipherClass, int position,
-            int length, int bufferSize, int total) throws Exception {
+    private void testReadFullyLoop(final String cipherClass, int position,
+            final int length, final int bufferSize, final int total) throws Exception {
         try (PositionedCryptoInputStream in = getCryptoInputStream(
                 getCipher(cipherClass), bufferSize)) {
 
             // do the position read full until remain < length
             while (position + length <= total) {
-                byte[] bytes = new byte[length];
+                final byte[] bytes = new byte[length];
                 in.readFully(position, bytes, 0, length);
                 compareByteArray(testData, position, bytes, length);
                 position += length;
@@ -262,25 +262,25 @@ public class PositionedCryptoInputStreamTest {
     }
 
     // test for the End of file reached before reading fully
-    private void testReadFullyFailed(String cipherClass, int position,
-            int length, int bufferSize) throws Exception {
-        PositionedCryptoInputStream in = getCryptoInputStream(
+    private void testReadFullyFailed(final String cipherClass, final int position,
+            final int length, final int bufferSize) throws Exception {
+        final PositionedCryptoInputStream in = getCryptoInputStream(
                 getCipher(cipherClass), bufferSize);
-        byte[] bytes = new byte[length];
+        final byte[] bytes = new byte[length];
         try {
             in.readFully(position, bytes, 0, length);
             Assert.fail("Expected IOException.");
-        } catch (IOException ioe) {
+        } catch (final IOException ioe) {
             // excepted exception
         }
         in.close();
     }
 
     // compare the data from pos with length and data2 from 0 with length
-    private void compareByteArray(byte[] data1, int pos, byte[] data2,
-            int length) {
-        byte[] expectedData = new byte[length];
-        byte[] realData = new byte[length];
+    private void compareByteArray(final byte[] data1, final int pos, final byte[] data2,
+            final int length) {
+        final byte[] expectedData = new byte[length];
+        final byte[] realData = new byte[length];
         // get the expected data with the position and length
         System.arraycopy(data1, pos, expectedData, 0, length);
         // get the real data
@@ -288,12 +288,12 @@ public class PositionedCryptoInputStreamTest {
         Assert.assertArrayEquals(expectedData, realData);
     }
 
-    private CryptoCipher getCipher(String cipherClass) throws IOException {
+    private CryptoCipher getCipher(final String cipherClass) throws IOException {
         try {
             return (CryptoCipher) ReflectionUtils.newInstance(
                     ReflectionUtils.getClassByName(cipherClass), props,
                     transformation);
-        } catch (ClassNotFoundException cnfe) {
+        } catch (final ClassNotFoundException cnfe) {
             throw new IOException("Illegal crypto cipher!");
         }
     }
@@ -304,20 +304,20 @@ public class PositionedCryptoInputStreamTest {
         long pos;
         long count;
 
-        public PositionedInputForTest(byte[] data) {
+        public PositionedInputForTest(final byte[] data) {
             this.data = data;
             this.pos = 0;
             this.count = data.length;
         }
 
         @Override
-        public int read(ByteBuffer dst) throws IOException {
-            int remaining = (int) (count - pos);
+        public int read(final ByteBuffer dst) throws IOException {
+            final int remaining = (int) (count - pos);
             if (remaining <= 0) {
                 return -1;
             }
 
-            int length = Math.min(dst.remaining(), remaining);
+            final int length = Math.min(dst.remaining(), remaining);
             dst.put(data, (int) pos, length);
             pos += length;
             return length;
@@ -329,7 +329,7 @@ public class PositionedCryptoInputStreamTest {
                 return 0;
             }
 
-            long remaining = count - pos;
+            final long remaining = count - pos;
             if (remaining < n) {
                 n = remaining;
             }
@@ -339,7 +339,7 @@ public class PositionedCryptoInputStreamTest {
         }
 
         @Override
-        public int read(long position, byte[] buffer, int offset, int length)
+        public int read(final long position, final byte[] buffer, final int offset, int length)
                 throws IOException {
             Objects.requireNonNull(buffer, "buffer");
             if (offset < 0 || length < 0
@@ -351,7 +351,7 @@ public class PositionedCryptoInputStreamTest {
                 return -1;
             }
 
-            long avail = count - position;
+            final long avail = count - position;
             if (length > avail) {
                 length = (int) avail;
             }
@@ -363,7 +363,7 @@ public class PositionedCryptoInputStreamTest {
         }
 
         @Override
-        public void seek(long position) throws IOException {
+        public void seek(final long position) throws IOException {
             if (pos < 0) {
                 throw new IOException("Negative seek offset");
             } else if (position >= 0 && position < count) {
diff --git a/src/test/java/org/apache/commons/crypto/utils/EnumTest.java b/src/test/java/org/apache/commons/crypto/utils/EnumTest.java
index 72a5f61..a98c93e 100644
--- a/src/test/java/org/apache/commons/crypto/utils/EnumTest.java
+++ b/src/test/java/org/apache/commons/crypto/utils/EnumTest.java
@@ -30,14 +30,14 @@ public class EnumTest {
 
     @Test
     public void testRandom() throws Exception {
-        for(RandomProvider value : CryptoRandomFactory.RandomProvider.values()) {
+        for(final RandomProvider value : CryptoRandomFactory.RandomProvider.values()) {
             ReflectionUtils.getClassByName(value.getClassName());
         }
     }
 
     @Test
     public void testCipher() throws Exception {
-        for(CipherProvider value : CryptoCipherFactory.CipherProvider.values()) {
+        for(final CipherProvider value : CryptoCipherFactory.CipherProvider.values()) {
             ReflectionUtils.getClassByName(value.getClassName());
         }
     }