@Override
    public String decrypt(String cipherText) throws CryptoException {
        try {
            Assert.isTrue(canDecrypt(cipherText), "bad cipher text");

            String[] splits = cipherText.split(":");

            String encodedIV = splits[1];
            String encodedCipherText = splits[2];

            byte[] initializationVector = DECODER.decode(encodedIV);
            Cipher decryptCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            decryptCipher.init(Cipher.DECRYPT_MODE, createSecretKeySpec(), new IvParameterSpec(initializationVector));

            byte[] decryptedBytes = decryptCipher.doFinal(DECODER.decode(encodedCipherText));
            return new String(decryptedBytes, StandardCharsets.UTF_8);
        } catch (Exception e) {
            throw new CryptoException(e);
        }
    }
@Test
    public void shouldDecryptEncryptedText() throws CryptoException {
        String decrypt = aesEncrypter.decrypt("AES:lzcCuNSe4vUx+CsWgN11Uw==:DelRFu6mCN7kC/2oYmeLRA==");
        assertThat(decrypt).isEqualTo("p@ssw0rd");
    }