code: public Map<String, String> getEncryptorKeys(String name, String profiles,
  			String text) {
  
  		Map<String, String> keys = new LinkedHashMap<String, String>();
  
  		text = removeEnvironmentPrefix(text);
  		keys.put(NAME, name);
  		keys.put(PROFILES, profiles);
  
  		if (text.contains(ESCAPE)) {
  			text = text.substring(0, text.indexOf(ESCAPE));
  		}
  
  		String[] tokens = StringUtils.split(text, "}");
  		while (tokens != null) {
  			String token = tokens[0].trim();
  			if (token.startsWith("{")) {
  				String key = "";
  				String value = "";
  				if (token.contains(":") && !token.endsWith(":")) {
  					key = token.substring(1, token.indexOf(":"));
  					value = token.substring(token.indexOf(":") + 1);
  				}
  				else {
  					key = token.substring(1);
  				}
  				keys.put(key, value);
  			}
  			text = tokens[1];
  			tokens = StringUtils.split(text, "}");
  		}
  
  		return keys;
  
  	}
docs: Extract keys for looking up a {@link TextEncryptor} from the input text in the form
  of a prefix of zero or many <code>{name:value}</code> pairs. The name and profiles
  properties are always added to the keys (replacing any provided in the inputs).
  @param name application name
  @param profiles list of profiles
  @param text text to cipher
  @return encryptor keys