private static byte[] AES256CBC(byte[] intermediateKey, byte[] encryptedString) {
        byte[] finalData = null;
        try {
            // AES with cipher block chaining and no padding
            SecretKeySpec key = new SecretKeySpec(intermediateKey, "AES");
            Cipher aes = Cipher.getInstance("AES/CBC/NoPadding");
            // empty initialization vector
            final IvParameterSpec iVParameterSpec =
                    new IvParameterSpec(new byte[16]);
            // go!
            aes.init(Cipher.DECRYPT_MODE, key, iVParameterSpec);
            // finally add the stream or string data
            finalData = aes.doFinal(encryptedString);
        } catch (NoSuchAlgorithmException ex) {
            logger.log(Level.FINE, "NoSuchAlgorithmException.", ex);
        } catch (IllegalBlockSizeException ex) {
            logger.log(Level.FINE, "IllegalBlockSizeException.", ex);
        } catch (BadPaddingException ex) {
            logger.log(Level.FINE, "BadPaddingException.", ex);
        } catch (NoSuchPaddingException ex) {
            logger.log(Level.FINE, "NoSuchPaddingException.", ex);
        } catch (InvalidKeyException ex) {
            logger.log(Level.FINE, "InvalidKeyException.", ex);
        } catch (InvalidAlgorithmParameterException ex) {
            logger.log(Level.FINE, "InvalidAlgorithmParameterException", ex);
        }
        return finalData;
    }