package com.safeluck.aaej.app.dubbo; import com.alibaba.dubbo.rpc.*; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import java.util.*; //@Component public class FaceSignFilter implements Filter { @Override public Result invoke(Invoker invoker, Invocation invocation) throws RpcException { RpcContext.getContext().setAttachment("mct_id","5"); RpcContext.getContext().setAttachment("sign", SignUtil.sign(RpcContext.getContext().getAttachments() ,"5568f430b81bf279229114b261bgps11","input","interface") ); return invoker.invoke(invocation); } static class SignUtil { public static String sortedOrgin(Map map, String... excluded) { SortedMap sortedMap = new TreeMap(); List excludeds = Arrays.asList(excluded); for (Map.Entry m : map.entrySet()) { if (excludeds.contains(m.getKey())) { continue; } sortedMap.put(m.getKey(), m.getValue().toString()); } List sb = new ArrayList<>(sortedMap.size()); Set es = sortedMap.entrySet(); Iterator it = es.iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); String k = (String) entry.getKey(); String v = (String) entry.getValue(); if (StringUtils.isBlank(k)) { continue; } sb.add(k + "=" + v); } return StringUtils.join(sb, "&"); } public static String sign(String orgin, String secretKey) { return DigestUtils.md5Hex(orgin + "&" + secretKey); } public static String sign(Map map, String secretKey, String... excludes) { String orgin = sortedOrgin(map, excludes); return DigestUtils.md5Hex(orgin + "&" + secretKey); } } }