java api签名验证

https://my.oschina.net/KelinM/blog/1925209

https://blog.csdn.net/u010096717/article/details/84558463

https://blog.csdn.net/ma_jiang/article/details/53636840

https://blog.csdn.net/qq_18495465/article/details/79248608

import org.springframework.util.StringUtils;
 
import java.util.Map;
import java.util.Random;
import java.util.TreeMap;
 
/**
 * @Author: JCccc
 * @CreateTime: 2018-10-30
 * @Description:
 */
public class SignUtils {
 
 
 
    public String getTimestamp() {
        //生成时间戳
 
        long timestampLong =System.currentTimeMillis();
 
        String timestampStr = String.valueOf(timestampLong);
 
        return timestampStr;
    }
 
 
 
    public String getNonceStr(int length){
 
        //生成随机字符串
 
        String str="zxcvbnmlkjhgfdsaqwertyuiopQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
 
        Random random=new Random();
 
        StringBuffer randomStr=new StringBuffer();
 
        // 设置生成字符串的长度,用于循环
 
        for(int i=0; i<length; ++i){
            //从62个的数字或字母中选择
 
            int number=random.nextInt(62);
 
            //将产生的数字通过length次承载到sb中
 
            randomStr.append(str.charAt(number));
        }
 
        //将承载的字符转换成字符串
 
        return randomStr.toString();
    }
 
 
//类似微信接口的签名生成方法
    public String createSign(Map<String, String> params, String privateKey){
        StringBuilder sb = new StringBuilder();
        // 将参数以参数名的字典升序排序
        Map<String, String> sortParams = new TreeMap<String, String>(params);
        // 遍历排序的字典,并拼接"key=value"格式
        for (Map.Entry<String, String> entry : sortParams.entrySet()) {
            String key = entry.getKey();
            String value =  entry.getValue().trim();
            if (!StringUtils.isEmpty(value))
                sb.append("&").append(key).append("=").append(value);
        }
        String stringA = sb.toString().replaceFirst("&","");
     
        //String stringSignTemp = stringA + "&"+"appkey="+privateKey;
       //将签名使用MD5加密并全部字母变为大写
       // String signValue = Md5Encrypt.md5(stringSignTemp).toUpperCase();
        // System.out.println("stringA+privateKey后MD5加密+转换全部大写生成sign为:       "+signValue);
        return stringA ;
    }
 
 
}
package com.awj.mall.restfulapi.common.util;

import java.util.*;

import javax.servlet.http.HttpServletRequest;

import com.google.common.collect.Maps;
import com.awj.mall.restfulapi.modular.base.interceptor.AuthInterceptor;


/**
 * Request请求的工具类
 * @author Administrator
 *
 */
public class RequestUtil {

	
	/**
	 * 获取ip
	 * @param request
	 * @return
	 */
	public static String getIpAddr(HttpServletRequest request) {
		String ip = request.getHeader("x-forwarded-for");
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("Proxy-Client-IP");
		}
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("WL-Proxy-Client-IP");
		}
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getRemoteAddr();
		}
		return ip;
	}
	
	
	public static String getURI(HttpServletRequest request){
		return request.getRequestURI();
	}
	
	public static String getURL(HttpServletRequest request){
		return request.getRequestURL().toString();
	}
	
	/**
	 * 获取key值获取request中的value
	 * 
	 * @param request
	 * @param key
	 * @return
	 */
	public static String getParam(HttpServletRequest request,String key){
		return request.getParameter(key);
	}
	
	/**
	 * @Author: hanweisheng
	 * @Description: 获取request请求的map
	 * @method:
	 * @params:
	 * @Date: Created in 2018/4/13 14:21
	 */
	public static Map<String, String> getRequestMap(HttpServletRequest req) {
		Map<String, String> params = Maps.newHashMap();
		Map<String, String[]> requestParams = req.getParameterMap();
		for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
			String name = iter.next();
			String[] values = requestParams.get(name);
			String valueStr = "";
			for (int i = 0; i < values.length; i++) {
				valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
			}
			params.put(name, valueStr);
		}
		return params;
	}

	public static String getRequestStr(HttpServletRequest req, String excludeStr) {
		StringBuffer buffer = new StringBuffer();
		Map<String, String[]> requestParams = req.getParameterMap();
		for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
			String name = iter.next();
			if (name.equals(excludeStr)) {
				continue;
			}
			String[] values = requestParams.get(name);
			String valueStr = "";
			for (int i = 0; i < values.length; i++) {
				valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
			}
			buffer.append(name).append("=").append(valueStr).append("&");
		}

		if (buffer.length() > 0) {
			buffer.deleteCharAt(buffer.length() - 1);
		}
		return buffer.toString();
	}

	public static String getOrderRequestStr(HttpServletRequest req, String excludeStr){
		List<String> list = new ArrayList<String>();
		Map<String, String[]> requestParams = req.getParameterMap();
		for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
			String name = iter.next();
			if (name.equals(excludeStr)) {
				continue;
			}
			String[] values = requestParams.get(name);
			String valueStr = "";
			for (int i = 0; i < values.length; i++) {
				valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
			}
			list.add(name+"="+valueStr);
		}
		StringBuffer buffer = new StringBuffer();
		if(list.size()>0){
			Collections.sort(list);
			for (int i = 0; i <list.size() ; i++) {
				buffer .append( (i == list.size() - 1) ?  list.get(i) : list.get(i) + "&");
			}
		}
		return buffer.toString();
	}



	public static String getOrderStr(Map<String,String> map, String excludeStr){
		List<String> list = new ArrayList<String>();
		for (Iterator<String> iter = map.keySet().iterator(); iter.hasNext();) {
			String name = iter.next();
			if (name.equals(excludeStr)) {
				continue;
			}
			String value = map.get(name);
			list.add(name+"="+value);
		}
		StringBuffer buffer = new StringBuffer();
		if(list.size()>0){
			Collections.sort(list);
			for (int i = 0; i <list.size() ; i++) {
				buffer .append( (i == list.size() - 1) ?  list.get(i) : list.get(i) + "&");
			}
		}
		return buffer.toString();
	}


	public static String getUriPath(HttpServletRequest req) {
		String uri = req.getRequestURI();
		String contextPath = req.getServletContext().getContextPath();
		if (!StringUtils.isEmpty(contextPath)) {
			uri = uri.replaceFirst(contextPath, "");
		}
		return uri;
	}


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值