public String hash(Map<String, ?> map) { MessageDigest digest = HashUtil.createDigester(); List<String> keys = getSortedKeys(map); for (String key : keys) { Object value = getKeyValue(key, map); appendObject(digest, key); digest.update("=".getBytes()); appendObject(digest, value); digest.update(",".getBytes()); } return HashUtil.toHexString(digest.digest()); }