public static String decrypt (String str) {
        byte[] keyMac = OSUtils.getMacAddress();
        byte[] keyHardware = OSUtils.getHardwareID();
        String s;
        try {
            Cipher aes = Cipher.getInstance("AES");
            if (keyHardware != null && keyHardware.length > 0) {
                try {
                    aes.init(Cipher.DECRYPT_MODE, new SecretKeySpec(pad(keyHardware), "AES"));
                    s = new String(aes.doFinal(Base64.decodeBase64(str)), "utf8");
                    if (s.startsWith("FDT:") && s.length() > 4)
                        return s.split(":", 2)[1];// it was decrypted with HW UUID
                } catch (Exception e) {
                    Logger.logDebug("foo", e);
                }
            }

            // did not open, try again with old mac based key
            aes.init(Cipher.DECRYPT_MODE, new SecretKeySpec(pad(keyMac), "AES"));
            s = new String(aes.doFinal(Base64.decodeBase64(str)), "utf8");
            if (s.startsWith("FDT:") && s.length() > 4)
                return s.split(":", 2)[1];//we don't want the decryption test
            else
                return decryptLegacy(str, keyMac);
        } catch (Exception e) {
            Logger.logError("Error Decrypting information, attempting legacy decryption", e);
            return decryptLegacy(str, keyMac);
        }
    }