public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException { Arrays.fill(ivBytes, (byte) 0x00); iv = new IvParameterSpec(ivBytes); Object derivedKey = message.getInvocationProperty("derivedKey"); if (null == derivedKey) { keyValue = Base64.decodeBase64(DEFAULT_KEY.getBytes()); } else { keyValue = Base64.decodeBase64(derivedKey.toString().getBytes()); } SecretKeySpec skeySpec = new SecretKeySpec(keyValue, "AES"); Cipher cipher = null; try { cipher = Cipher.getInstance(ALGO); } catch (NoSuchAlgorithmException e1) { e1.printStackTrace(); } catch (NoSuchPaddingException e1) { e1.printStackTrace(); } try { cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv); } catch (InvalidKeyException | InvalidAlgorithmParameterException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } byte[] original = null; try { // Object queryParm1 = message.getPayload().toString()); //"2zU3YSkvbamjrlE7WgBaKA=="); // Object queryParm1 = message.getInvocationProperty("1"); // HashMap queryParms = (HashMap)message.getInboundProperty("http.query.params"); // Object queryParm1 = queryParms.get("1"); Object queryParm1 = message.getInvocationProperty("encryptedPatientId"); if (queryParm1 != null) { byte[] encString = Base64.decodeBase64(queryParm1.toString().getBytes()); original = cipher.doFinal(encString); String clearText = ""; try { clearText = new String(original, UNICODE_FORMAT).trim(); // message.setInvocationProperty("patientId", clearText); message.setOutboundProperty("patientId", clearText); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } catch (IllegalBlockSizeException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (BadPaddingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } return message; }