工作纪实56-ES搜索串一致性

时间:2025-05-13 15:14:25
public static String genUniqueKey(String uid, String queryCond) { String[] paramsArray = queryCond.split("&"); Map<String, String> paramsMap = new TreeMap<>(); for (String param : paramsArray) { String[] keyValue = param.split("="); paramsMap.put(keyValue[0], keyValue[1]); } // 将参数按照键名排序 StringBuilder sortedParams = new StringBuilder(uid).append("&"); for (Map.Entry<String, String> entry : paramsMap.entrySet()) { sortedParams.append(entry.getKey()).append("=").append(entry.getValue()).append("&"); } // 使用SHA-256生成哈希值 try { java.security.MessageDigest md = java.security.MessageDigest.getInstance("SHA-256"); byte[] hash = md.digest(sortedParams.toString().getBytes("UTF-8")); StringBuilder hexString = new StringBuilder(); for (byte b : hash) { String hex = Integer.toHexString(0xff & b); if (hex.length() == 1) hexString.append('0'); hexString.append(hex); } return hexString.toString(); } catch (Exception e) { e.printStackTrace(); } return null; }