前段时间做一个项目,涉及到与一个第三方平台对接。对方平台是java开发的,没有提供C#的sdk,由于涉及到签名问题,所有不得不翻看他们的java sdk,并按照他们的算法翻译成C#。有些问题百度半天也没找到答案,最后好不容易搞定了,特此记录下。
public static String makeSig(TreeMap param,String key){
try{
String str = OAuthUtil.sigParam(param);
String mac = new BigInteger(Coder.encryptHMAC((str).getBytes("utf-8"), key)).toString();
System.out.println("InterfaceService >> MAC :"+mac);
return mac;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
private static String sigParam(TreeMap param){
String str = "";
//1 排序 2组串
Set set = param.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
String key = (String)it.next();
str+=key+"="+param.get(key);
}
return str;
}