docs: public static String decryptEncodedStringWithKey(String string, Key key)
        throws NoSuchPaddingException,
        NoSuchAlgorithmException,
        InvalidKeyException,
        BadPaddingException,
        IllegalBlockSizeException,
        InvalidAlgorithmParameterException
    {
      String decryptedString;
  
      log.debug("Base64 string = `{}`", string);
      byte[] decryptedStringData;
      byte[] rawData = Base64.decodeBase64(string);
      byte[] iv = new byte[16];
      byte[] cipherText = new byte[rawData.length - iv.length];
  
      System.arraycopy(rawData, 0, iv, 0, 16);
      System.arraycopy(rawData, 16, cipherText, 0, cipherText.length);
  
      log.debug("iv = `{}`", Crypto.toHex(iv));
      log.debug("cipherText.length = `{}`", cipherText.length);
      log.debug("cipherText = \n{}", Crypto.toHex(cipherText));
      
      SecretKeySpec skey = new SecretKeySpec(key.data(), "AES");
      Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
      cipher.init(Cipher.DECRYPT_MODE, skey, new IvParameterSpec(iv));
      decryptedStringData = cipher.doFinal(cipherText);
      decryptedString = new String(decryptedStringData);
  
      return decryptedString;
    }