private boolean checkForEncryption() {
        if (!Wrapper.getSubscription(aThis.headerMap.get("Subscription")).getPassword().equals(""))
        {
            try
            {
                Subscription s = Wrapper.getSubscription(aThis.headerMap.get("Subscription"));
                MD5 md5 = new MD5(Functions.padright(s.getPassword(), aThis.headerMap.get("Encryption-ID"), 16).substring(0, 16));
                String key = md5.hash().substring(0, 16);
                String iv = Functions.reverse(key);

                Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
                SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES");
                IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes());
                cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);

                aThis.headerMap.put("Title", new String(cipher.doFinal(Functions.hexToBytes(aThis.headerMap.get("Title")))).trim());
                aThis.headerMap.put("Author", new String(cipher.doFinal(Functions.hexToBytes(aThis.headerMap.get("Author")))).trim());
                aThis.headerMap.put("URL", new String(cipher.doFinal(Functions.hexToBytes(aThis.headerMap.get("URL")))).trim());
                
                HashMap<String, String> temp = new HashMap<String, String>(aThis.headerMap);
                temp.remove("ID");
                temp.remove("Verification");
                temp.remove("Verification-ID");
                temp.remove("Subscription");
                temp.remove("Title");
                temp.remove("Author");
                temp.remove("URL");
                temp.remove("Encryption-ID");
                
                Collection<Entry<String,String>> vals = temp.entrySet();
                Iterator<Entry<String,String>> i = vals.iterator();
                while (i.hasNext())
                {
                    Entry<String,String> e = (Entry<String,String>) i.next();
                    aThis.headerMap.put(e.getKey(), new String(cipher.doFinal(Functions.hexToBytes(e.getValue()))).trim());    
                }

                return true;
            } catch (IllegalBlockSizeException ex)
            {
                Logger.getLogger(WellFormedItem.class.getName()).log(Level.SEVERE, null, ex);
                return false;
            } catch (BadPaddingException ex)
            {
                Logger.getLogger(WellFormedItem.class.getName()).log(Level.SEVERE, null, ex);
                return false;
            } catch (InvalidKeyException ex)
            {
                Logger.getLogger(WellFormedItem.class.getName()).log(Level.SEVERE, null, ex);
                return false;
            } catch (InvalidAlgorithmParameterException ex)
            {
                Logger.getLogger(WellFormedItem.class.getName()).log(Level.SEVERE, null, ex);
                return false;
            } catch (NoSuchAlgorithmException ex)
            {
                Logger.getLogger(WellFormedItem.class.getName()).log(Level.SEVERE, null, ex);
                return false;
            } catch (NoSuchPaddingException ex)
            {
                Logger.getLogger(WellFormedItem.class.getName()).log(Level.SEVERE, null, ex);
                return false;
            }
        } else {
            return true;
        }
    }