对request请求参数加密原理:
1. 对原始参数名加前辍标⽰为加密参数名,传输前对其参数值加密。
2. 获取时,先检查原始名称是否存在,如果不存在则查是否有加密前辍的参数名,并对其解密。public class RequestUtil {
/**安全名称前辍*/
public static final String SAFE_PREFIX = "__";
/**
* 转换为安全参数名称
* @param name
* @return
*/
static
public String toSafeParamName(String name){
if(null==name || "".equals(name)){
throw new NullPointerException("name is null");
}
return SAFE_PREFIX+name;
}
/**
* 转换为⼀个安全的字符串参数
* @param value
param name* @param eKey 密钥
* @return
*/
static
public String toSafeStrParam(String value, String eKey){
return null!=value? de(value, eKey): value;
}
/**
* 还原(安全转换过的)字符串
* @param value
* @param eKey
* @return
*/
static
public String recoveryStr(String value, String eKey){
if(null != value && value.length()>2){
return DesUtil.decode(value, eKey);
}
return value;
}
/**
* 获取请求字符串参数<br/>
* 依parameter-attribute-session序查
* @param request
* @param name  如果在参数中不到name的参数,则尝试SAFE_PREFIX+name
* @param eKey 密钥
* @return
*/
static
public String getRequestStrParam(HttpServletRequest request, String name, String eKey){
String name$ = SAFE_PREFIX+name;
String Parameter(name);
if(null == value){
value = Parameter(name$);
value = recoveryStr(value, eKey);
}
if(null == value){
if(null == (value=(Attribute(name))){
value = (Attribute(name$);
value = recoveryStr(value, eKey);
}
}
if(null == value){
HttpSession session = Session();
if(null!=session){
if(null == (value=(Attribute(name))){
value = (Attribute(name$);
value = recoveryStr(value, eKey);
}
}
}
return value;
}
}
测试:
servlet(spring mvc)
@Controller
@RequestMapping("/t")
public class TestController {
static final String ENC_KEY = "..............";
@RequestMapping("test1")
@ResponseBody
public String test1(HttpServletRequest request){
String value =  RequestStrParam(request, "name", ENC_KEY);        return value;
}
}
⽣成加密url
public class Test2 {
private static String ENC_KEY = "。。。。。。。。。。。。。";
@Test
public void t1(){
String req_name = "name";
String req_value = "Tom";
String url = String.format("127.0.0.1:8080/t/test1?%s=%s",                SafeParamName(req_name),
System.out.println(url);
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。