code: String decrypt(String str) throws DecryptException {
          if (str == null) {
              return null;
          }
          try {
              initCiphers();
              byte[] ciphertext = Base64.decodeBase64(str);
              byte[] cleartext = this.decryptCipher.doFinal(ciphertext);
              return new String(cleartext);
          } catch (NoSuchAlgorithmException | NoSuchPaddingException | IllegalBlockSizeException | BadPaddingException ex) {
              throw new DecryptException(ex);
          } catch (InvalidKeyException ex) {
              throw new AssertionError(ex);
          }
  
      }
docs: Decrypts the provided hex string. This method converts a hex string to a
  byte array and passes the array to a decryption cipher. If an exception
  is thrown, this instance may no longer be usable.
  
  @param str the hex string to encrypt.
  @return the encrypted version of the string, or <code>null</code> if the
  provided string is <code>null</code>.
  
  @throws BadPaddingException if the provided string lacks padding.
  @throws IllegalBlockSizeException if the provided string otherwise cannot
  be decrypted.