public static Map<String, String> getClientMd5Map(String configKeysString) {
        Map<String, String> md5Map = new HashMap(CLIENT_MD5_MAP_INIT_SIZE);
        if (null == configKeysString || "".equals(configKeysString)) {
            return md5Map;
        }
        int start = 0;
        List<String> tmpList = new ArrayList(CLIENT_MD5_TMP_LIST_INIT_SIZE);
        for (int i = start; i < configKeysString.length(); i++) {
            char c = configKeysString.charAt(i);
            if (c == WORD_SEPARATOR_CHAR) {
                tmpList.add(configKeysString.substring(start, i));
                start = i + 1;
                if (tmpList.size() > CLIENT_MD5_TMP_LIST_MAX_SIZE) {
                    // Malformed message and return parameter error.
                    throw new IllegalArgumentException("invalid protocol,too much key");
                }
            } else if (c == LINE_SEPARATOR_CHAR) {
                String endValue = "";
                if (start + 1 <= i) {
                    endValue = configKeysString.substring(start, i);
                }
                start = i + 1;
                String groupKey = getKey(tmpList.get(INDEX_0), tmpList.get(INDEX_1), tmpList.get(INDEX_2), tmpList.get(INDEX_3));
                groupKey = SingletonRepository.DataIdGroupIdCache.getSingleton(groupKey);
                md5Map.put(groupKey, endValue);
                tmpList.clear();
                // Protect malformed messages
                if (md5Map.size() > CLIENT_MD5_MAP_MAX_SIZE) {
                    throw new IllegalArgumentException("invalid protocol, too much listener");
                }
            }
        }
        return md5Map;
    }
@Test
    public void getClientMd5MapTest() {
        ConfigAllInfo configAllInfo = new ConfigAllInfo();
        configAllInfo.setDesc("hippo4j config");
        String tpContentMd5 = Md5ConfigUtil.getTpContentMd5(configAllInfo);
        Assert.isTrue(StringUtil.isNotEmpty(tpContentMd5));
    }