在金融领域,牵涉到下单支付的接口,为了增加接口的安全性(防止中间人攻击),增加md5签名算法。分别用java和javaScript实现,测试签名结果一致,大家可以放心使用。
md5验签算法主要有以下几步:
1,将请求头head和请求体body合并, 并剔除key值为sign的选项,因为签名本身不参与计算;
2,将参数名key按照ASCII码从小到大排序(字典序),参数名区分大小写;
3,如果key或者value的值为null或者空字符串则不参与签名;
4,将签名密钥和待签名字符串一起进行md5算法计算,得到签名sign值
java实现
HashMap params = new HashMap();
HashMap head = new HashMap();
head.put("trans_code", "0001");
head.put("chnlId", "01");
head.put("chnlUserId", "da91d3a936f34fad82788892c4574e43b");
head.put("sessionId", "4cfjejenddu1fcd4b6eaa4f8db4fe628a8a");
head.put("timestamp", System.currentTimeMillis());
HashMap body = new HashMap();
body.put("bakNo", "77777777