public byte[] decrypt(Key key, byte[] cipherText) throws GuacamoleException {

        try {

            // Init cipher for descryption using secret key
            Cipher cipher = Cipher.getInstance(DECRYPTION_CIPHER_NAME);
            cipher.init(Cipher.DECRYPT_MODE, key, NULL_IV);

            // Perform decryption
            return cipher.doFinal(cipherText);

        }

        // Rethrow all decryption failures identically
        catch (InvalidAlgorithmParameterException
                | NoSuchAlgorithmException
                | NoSuchPaddingException
                | InvalidKeyException
                | IllegalBlockSizeException
                | BadPaddingException e) {
            throw new GuacamoleServerException(e);
        }

    }
Decrypts the given ciphertext using the provided key, returning the
resulting plaintext. If any error occurs during decryption at all, a
GuacamoleException is thrown. The IV used for the decryption process is
a null IV (all binary zeroes).

@param key
    The key to use to decrypt the provided ciphertext.

@param cipherText
    The ciphertext to decrypt.

@return
    The plaintext which results from decrypting the ciphertext with the
    provided key.

@throws GuacamoleException
    If any error at all occurs during decryption.
extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/CryptoService.java