1.0.9
This commit is contained in:
parent
fe9e443ddf
commit
3606ba57fa
|
@ -1,5 +1,6 @@
|
|||
# 加密解密功能介绍
|
||||
|
||||
#### [公、私钥生成](RSA.md)
|
||||
|
||||
#### 客户端解密(服务器端加密出参data)
|
||||
|
||||
|
@ -61,11 +62,11 @@
|
|||
|
||||
#### 客户端加密 (服务器端解密入参data)
|
||||
|
||||
>1.客户端先使用公钥加密,参数为Map类型 <br/>
|
||||
>然后ASCII码排序得到新的参数->result1=xxxxx&result2=xxxxx,再MD5的到sign <br/>
|
||||
>加密新的参数得到data(也可以对原map JSON化后加密)
|
||||
>1. 客户端先使用公钥加密,参数为Map类型 <br/>
|
||||
> 1.1 参数先ASCII码排序得到新的参数->result1=xxxxx&result2=xxxxx,再MD5的到sign <br/>
|
||||
> 1.2 加密新的参数得到data(也可以对原map JSON化后加密)
|
||||
>
|
||||
>2.API接收到json参数,解析为ParamsPO <br/>
|
||||
>2. API接收到json参数,解析为ParamsPO <br/>
|
||||
>ParamsPO.data部分进行解密操作,解密后得到原始参数(result1=xxxxx&result2=xxxxx)做MD5校验
|
||||
|
||||
原始参数
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
#生成私钥
|
||||
keytool -genkey -alias lgfishing -keyalg RSA -keystore lgfishing2.keystore -keysize 1024 -validity 36500
|
||||
```
|
||||
输入密钥库口令:
|
||||
再次输入新口令:
|
||||
您的名字与姓氏是什么?
|
||||
[Unknown]: heikengdiaoyu.com
|
||||
您的组织单位名称是什么?
|
||||
[Unknown]: 深圳金大米网络科技有限公司-老G钓鱼
|
||||
您的组织名称是什么?
|
||||
[Unknown]: 成都极致思维网络科技有限公司-老G钓鱼
|
||||
您所在的城市或区域名称是什么?
|
||||
[Unknown]: 成都
|
||||
您所在的省/市/自治区名称是什么?
|
||||
[Unknown]: 四川
|
||||
该单位的双字母国家/地区代码是什么?
|
||||
[Unknown]: CN
|
||||
CN=heikengdiaoyu.com, OU=深圳金大米网络科技有限公司-老G钓鱼, O=成都极致思维网络科技有限公司-老G钓鱼, L=成都, ST=四川, C=CN是否正确?
|
||||
[否]: 是
|
||||
```
|
||||
#生成公钥
|
||||
keytool -export -alias lgfishing -keystore lgfishing2.keystore -storepass lgfishing2018 -rfc -file lgfishing2.cer
|
|
@ -1,6 +1,13 @@
|
|||
uselaw-base 更新内容
|
||||
-------------------
|
||||
|
||||
#### version :1.0.9
|
||||
**time:** <br/>
|
||||
**branch:** master <br/>
|
||||
**update:** <br/>
|
||||
1. 更新base依赖
|
||||
#
|
||||
|
||||
#### version :1.0.8
|
||||
**time:** 2018-5-4 09:54:18<br/>
|
||||
**branch:** master <br/>
|
||||
|
|
4
pom.xml
4
pom.xml
|
@ -5,7 +5,7 @@
|
|||
|
||||
<groupId>com.yexuejc.springboot</groupId>
|
||||
<artifactId>yexuejc-springboot-parent</artifactId>
|
||||
<version>1.0.8</version>
|
||||
<version>1.0.9</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>${project.artifactId}</name>
|
||||
|
@ -35,7 +35,7 @@
|
|||
<mybatis-spring-boot-starter.version>1.2.0</mybatis-spring-boot-starter.version>
|
||||
<mybatis.version>3.4.2</mybatis.version>
|
||||
|
||||
<yexuejc.base.version>1.1.2</yexuejc.base.version>
|
||||
<yexuejc.base.version>1.1.3</yexuejc.base.version>
|
||||
<jjwt.version>0.7.0</jjwt.version>
|
||||
<fastjson.version>1.1.46</fastjson.version>
|
||||
<commons-codec.version>1.10</commons-codec.version>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<parent>
|
||||
<groupId>com.yexuejc.springboot</groupId>
|
||||
<artifactId>yexuejc-springboot-parent</artifactId>
|
||||
<version>1.0.8</version>
|
||||
<version>1.0.9</version>
|
||||
<!-- 本地打包:使用相对关联路径 -->
|
||||
<!--<relativePath>../../yexuejc</relativePath>-->
|
||||
</parent>
|
||||
|
|
|
@ -96,61 +96,61 @@ public class MutiRedisAutoConfiguration {
|
|||
|
||||
@Primary
|
||||
@Bean(BEAN_REDIS_FACTORY0)
|
||||
@ConditionalOnProperty(name = "afound.redis.db0", matchIfMissing = true)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db0", matchIfMissing = true)
|
||||
public JedisConnectionFactory redisConnectionFactory0() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 0);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY1)
|
||||
@ConditionalOnProperty(name = "afound.redis.db1")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db1")
|
||||
public JedisConnectionFactory redisConnectionFactory1() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 1);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY2)
|
||||
@ConditionalOnProperty(name = "afound.redis.db2")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db2")
|
||||
public JedisConnectionFactory redisConnectionFactory2() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 2);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY3)
|
||||
@ConditionalOnProperty(name = "afound.redis.db3")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db3")
|
||||
public JedisConnectionFactory redisConnectionFactory3() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 3);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY4)
|
||||
@ConditionalOnProperty(name = "afound.redis.db4")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db4")
|
||||
public JedisConnectionFactory redisConnectionFactory4() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 4);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY5)
|
||||
@ConditionalOnProperty(name = "afound.redis.db5")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db5")
|
||||
public JedisConnectionFactory redisConnectionFactory5() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 5);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY6)
|
||||
@ConditionalOnProperty(name = "afound.redis.db6")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db6")
|
||||
public JedisConnectionFactory redisConnectionFactory6() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 6);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY7)
|
||||
@ConditionalOnProperty(name = "afound.redis.db7")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db7")
|
||||
public JedisConnectionFactory redisConnectionFactory7() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 7);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY8)
|
||||
@ConditionalOnProperty(name = "afound.redis.db8")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db8")
|
||||
public JedisConnectionFactory redisConnectionFactory8() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 8);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY9)
|
||||
@ConditionalOnProperty(name = "afound.redis.db9")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db9")
|
||||
public JedisConnectionFactory redisConnectionFactory9() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 9);
|
||||
}
|
||||
|
@ -282,7 +282,7 @@ public class MutiRedisAutoConfiguration {
|
|||
|
||||
@Primary
|
||||
@Bean(BEAN_REDIS_TEMPLATE0)
|
||||
@ConditionalOnProperty(name = "afound.redis.db0", matchIfMissing = true)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db0", matchIfMissing = true)
|
||||
public RedisTemplate<Object, Object> redisTemplate(
|
||||
@Qualifier(BEAN_REDIS_FACTORY0) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -290,7 +290,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE0)
|
||||
@ConditionalOnProperty(name = "afound.redis.db0", matchIfMissing = true)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db0", matchIfMissing = true)
|
||||
public StringRedisTemplate stringRedisTemplate(
|
||||
@Qualifier(BEAN_REDIS_FACTORY0) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -298,7 +298,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_TEMPLATE1)
|
||||
@ConditionalOnProperty(name = "afound.redis.db1")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db1")
|
||||
public RedisTemplate<Object, Object> redisTemplate1(
|
||||
@Qualifier(BEAN_REDIS_FACTORY1) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -306,7 +306,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE1)
|
||||
@ConditionalOnProperty(name = "afound.redis.db1")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db1")
|
||||
public StringRedisTemplate stringRedisTemplate1(
|
||||
@Qualifier(BEAN_REDIS_FACTORY1) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -314,7 +314,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_TEMPLATE2)
|
||||
@ConditionalOnProperty(name = "afound.redis.db2")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db2")
|
||||
public RedisTemplate<Object, Object> redisTemplate2(
|
||||
@Qualifier(BEAN_REDIS_FACTORY2) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -322,7 +322,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE2)
|
||||
@ConditionalOnProperty(name = "afound.redis.db2")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db2")
|
||||
public StringRedisTemplate stringRedisTemplate2(
|
||||
@Qualifier(BEAN_REDIS_FACTORY2) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -330,7 +330,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_TEMPLATE3)
|
||||
@ConditionalOnProperty(name = "afound.redis.db3")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db3")
|
||||
public RedisTemplate<Object, Object> redisTemplate3(
|
||||
@Qualifier(BEAN_REDIS_FACTORY3) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -338,7 +338,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE3)
|
||||
@ConditionalOnProperty(name = "afound.redis.db3")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db3")
|
||||
public StringRedisTemplate stringRedisTemplate3(
|
||||
@Qualifier(BEAN_REDIS_FACTORY3) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -346,7 +346,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_TEMPLATE4)
|
||||
@ConditionalOnProperty(name = "afound.redis.db4")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db4")
|
||||
public RedisTemplate<Object, Object> redisTemplate4(
|
||||
@Qualifier(BEAN_REDIS_FACTORY4) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -354,7 +354,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE4)
|
||||
@ConditionalOnProperty(name = "afound.redis.db4")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db4")
|
||||
public StringRedisTemplate stringRedisTemplate4(
|
||||
@Qualifier(BEAN_REDIS_FACTORY4) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -362,7 +362,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_TEMPLATE5)
|
||||
@ConditionalOnProperty(name = "afound.redis.db5")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db5")
|
||||
public RedisTemplate<Object, Object> redisTemplate5(
|
||||
@Qualifier(BEAN_REDIS_FACTORY5) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -370,7 +370,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE5)
|
||||
@ConditionalOnProperty(name = "afound.redis.db5")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db5")
|
||||
public StringRedisTemplate stringRedisTemplate5(
|
||||
@Qualifier(BEAN_REDIS_FACTORY5) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -378,7 +378,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_TEMPLATE6)
|
||||
@ConditionalOnProperty(name = "afound.redis.db6")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db6")
|
||||
public RedisTemplate<Object, Object> redisTemplate6(
|
||||
@Qualifier(BEAN_REDIS_FACTORY6) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -386,7 +386,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE6)
|
||||
@ConditionalOnProperty(name = "afound.redis.db6")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db6")
|
||||
public StringRedisTemplate stringRedisTemplate6(
|
||||
@Qualifier(BEAN_REDIS_FACTORY6) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -394,7 +394,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_TEMPLATE7)
|
||||
@ConditionalOnProperty(name = "afound.redis.db7")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db7")
|
||||
public RedisTemplate<Object, Object> redisTemplate7(
|
||||
@Qualifier(BEAN_REDIS_FACTORY7) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -402,7 +402,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE7)
|
||||
@ConditionalOnProperty(name = "afound.redis.db7")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db7")
|
||||
public StringRedisTemplate stringRedisTemplate7(
|
||||
@Qualifier(BEAN_REDIS_FACTORY7) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -410,7 +410,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_TEMPLATE8)
|
||||
@ConditionalOnProperty(name = "afound.redis.db8")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db8")
|
||||
public RedisTemplate<Object, Object> redisTemplate8(
|
||||
@Qualifier(BEAN_REDIS_FACTORY8) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -418,7 +418,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE8)
|
||||
@ConditionalOnProperty(name = "afound.redis.db8")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db8")
|
||||
public StringRedisTemplate stringRedisTemplate8(
|
||||
@Qualifier(BEAN_REDIS_FACTORY8) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -426,7 +426,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_TEMPLATE9)
|
||||
@ConditionalOnProperty(name = "afound.redis.db9")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db9")
|
||||
public RedisTemplate<Object, Object> redisTemplate9(
|
||||
@Qualifier(BEAN_REDIS_FACTORY9) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
@ -434,7 +434,7 @@ public class MutiRedisAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE9)
|
||||
@ConditionalOnProperty(name = "afound.redis.db9")
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db9")
|
||||
public StringRedisTemplate stringRedisTemplate9(
|
||||
@Qualifier(BEAN_REDIS_FACTORY9) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
|
|
|
@ -3,8 +3,11 @@ package com.yexuejc.springboot.base.autoconfigure;
|
|||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.MapperFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import com.fasterxml.jackson.databind.module.SimpleModule;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import com.yexuejc.base.http.Resps;
|
||||
import com.yexuejc.base.util.DateUtil;
|
||||
import com.yexuejc.base.util.StrUtil;
|
||||
|
@ -22,6 +25,7 @@ import org.springframework.core.Ordered;
|
|||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.converter.HttpMessageConverter;
|
||||
import org.springframework.http.converter.StringHttpMessageConverter;
|
||||
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
|
||||
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
|
||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
|
@ -60,11 +64,24 @@ public class WebAutoConfiguration extends WebMvcConfigurerAdapter {
|
|||
return converter;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
|
||||
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
|
||||
builder.serializationInclusion(JsonInclude.Include.NON_NULL);
|
||||
ObjectMapper objectMapper = builder.build();
|
||||
SimpleModule simpleModule = new SimpleModule();
|
||||
simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
|
||||
objectMapper.registerModule(simpleModule);
|
||||
objectMapper.configure(MapperFeature.PROPAGATE_TRANSIENT_MARKER, true);// 忽略 transient 修饰的属性
|
||||
return new MappingJackson2HttpMessageConverter(objectMapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureMessageConverters(
|
||||
List<HttpMessageConverter<?>> converters) {
|
||||
super.configureMessageConverters(converters);
|
||||
converters.add(responseBodyConverter());
|
||||
converters.add(mappingJackson2HttpMessageConverter());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -75,6 +92,7 @@ public class WebAutoConfiguration extends WebMvcConfigurerAdapter {
|
|||
|
||||
/******************************************编码部分*****************************************************/
|
||||
|
||||
|
||||
/**
|
||||
* 添加拦截器
|
||||
*/
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
package com.yexuejc.springboot.base.constant;
|
||||
|
||||
/**
|
||||
* redis 业务常量
|
||||
*
|
||||
* @author: maxf
|
||||
* @date: 2018/3/13 20:20
|
||||
*/
|
||||
public class RedisConsts {
|
||||
/**
|
||||
* 用户登录
|
||||
* consumer-session-13512345678
|
||||
*/
|
||||
public static String CONSUMER_SESSION = "consumer-session";
|
||||
}
|
|
@ -16,6 +16,7 @@ import org.springframework.http.converter.HttpMessageConverter;
|
|||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdvice;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.lang.reflect.Type;
|
||||
|
@ -77,7 +78,7 @@ public class ParamsRequestBodyAdvice implements RequestBodyAdvice {
|
|||
LogUtil.accessLogger.error("sign错误,请求内容:{}", JsonUtil.obj2Json(paramsPO));
|
||||
throw new GatewayException("sign错误");
|
||||
}
|
||||
InputStream body = IOUtils.toInputStream(JsonUtil.obj2Json(StrUtil.parseUrlencoded(data)), "UTF-8");
|
||||
InputStream body = new ByteArrayInputStream(data.getBytes("UTF-8"));
|
||||
LogUtil.accessLogger.debug("解密耗时:{}", System.currentTimeMillis() - t);
|
||||
return new MyHttpInputMessage(inputMessage.getHeaders(), body);
|
||||
} catch (Exception e) {
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
package com.yexuejc.springboot.base;
|
||||
package com.yexuejc.springboot.base.test;
|
||||
|
||||
import com.yexuejc.base.encrypt.RSA;
|
||||
import com.yexuejc.base.encrypt.RSA2;
|
||||
import com.yexuejc.base.pojo.ParamsPO;
|
||||
import com.yexuejc.base.util.JsonUtil;
|
||||
import com.yexuejc.base.util.StrUtil;
|
||||
import com.yexuejc.springboot.base.ApplicationRun;
|
||||
import com.yexuejc.springboot.base.filter.RsaProperties;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
@ -18,6 +19,7 @@ import java.security.NoSuchAlgorithmException;
|
|||
import java.security.UnrecoverableKeyException;
|
||||
import java.security.cert.CertificateException;
|
||||
import java.security.spec.InvalidKeySpecException;
|
||||
import java.util.Base64;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
@ -136,12 +138,15 @@ public class ApplicationTest {
|
|||
String privatePwd = "lgfishing2018";
|
||||
String privateAlias = "lgfishing";
|
||||
|
||||
String dataStr = "{\"ret\":\"0\",\"ExpireTime\":\"2015/10/28 23:59:59\",\"rettxt\":\"OK\",\"Token\":\"69296128A59798E2D423D3B1A9F766F4\"}'";
|
||||
String dataStr = "{\"ret\":\"0\",\"expireTime\":\"2015/10/28 23:59:59\",\"rettxt\":\"OK\",\"token\":\"69296128A59798E2D423D3B1A9F766F4\"}";
|
||||
|
||||
|
||||
|
||||
/***************************************************************************************************************************************************************************************************************************************/
|
||||
//客户端公钥加密
|
||||
String publicEncryptResult = RSA.publicEncrypt(dataStr, RSA2.getPublicKey(publicKey));
|
||||
System.out.println(publicEncryptResult);
|
||||
System.out.println(StrUtil.toMD5(dataStr));
|
||||
|
||||
//服务器私钥解密
|
||||
String privateDecryptResult = RSA.privateDecrypt(publicEncryptResult, RSA2.getPrivateKey(privateKey, privateAlias, privatePwd));
|
||||
|
@ -156,4 +161,41 @@ public class ApplicationTest {
|
|||
System.out.println(publicDecryptResult);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* key加解密
|
||||
* @throws NoSuchAlgorithmException
|
||||
* @throws InvalidKeySpecException
|
||||
*/
|
||||
@Test
|
||||
public void a() throws NoSuchAlgorithmException, InvalidKeySpecException {
|
||||
String privateKey = "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAiSo5blJ9-QJ0_QElcy5AaRTq-3oO4lJ8PvIOIt-Xr5SUFODVj3DUbiy6_0bxQYO3NiYHlXPb37UVV3jjlXJsXwIDAQABAkBE0WOJH2hGs93gRl_0vwLf9ffDfkTTdlER_73p70aad3QZRslEkinQH7G5aE_DgBm5m72TCeH-PD2FZ2lwtavBAiEAvnRown5Lpqbl0tN_OUxr_e1u9d_-8dNL_JEETO7BZCECIQC4XtY-18j0bVVLxaXPjKQ00D59yntwObihDNyRK0nAfwIgHPHEGgrnpGQo-Wl7JFIg925mNqfcLxRVsAS6CpcefQECIQCUsLdsmy6QIhTmNRJSXoSXq1KatE_05DhIekzwLs8eFQIgfMawMiu52ZxBI5_pZ7ancQZ6Dsxl45utFqJShzV1pio";
|
||||
String publicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIkqOW5SffkCdP0BJXMuQGkU6vt6DuJSfD7yDiLfl6-UlBTg1Y9w1G4suv9G8UGDtzYmB5Vz29-1FVd445VybF8CAwEAAQ";
|
||||
|
||||
String privatePwd = "lgfishing2018";
|
||||
String privateAlias = "lgfishing";
|
||||
|
||||
String dataStr = "{\"ret\":\"0\",\"ExpireTime\":\"2015/10/28 23:59:59\",\"rettxt\":\"OK\",\"Token\":\"69296128A59798E2D423D3B1A9F766F4\"}'";
|
||||
|
||||
/***************************************************************************************************************************************************************************************************************************************/
|
||||
//客户端公钥加密
|
||||
String publicEncryptResult = RSA.publicEncrypt(dataStr, RSA.getPublicKey(publicKey));
|
||||
System.out.println(publicEncryptResult);
|
||||
|
||||
//服务器私钥解密
|
||||
String privateDecryptResult = RSA.privateDecrypt(publicEncryptResult, RSA.getPrivateKey(privateKey));
|
||||
System.out.println(privateDecryptResult);
|
||||
/***************************************************************************************************************************************************************************************************************************************/
|
||||
//服务器端私钥加密
|
||||
String privateEncryptResult = RSA.privateEncrypt(dataStr, RSA.getPrivateKey(privateKey));
|
||||
System.out.println(privateEncryptResult);
|
||||
|
||||
//客户端公钥解密
|
||||
String publicDecryptResult = RSA.publicDecrypt(privateEncryptResult, RSA.getPublicKey(publicKey));
|
||||
System.out.println(publicDecryptResult);
|
||||
|
||||
System.out.println(Base64.getEncoder().encodeToString(RSA.getPublicKey(publicKey).getEncoded()));
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,110 @@
|
|||
package com.yexuejc.springboot.base.test;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.security.Key;
|
||||
import java.security.KeyStore;
|
||||
import java.security.cert.Certificate;
|
||||
import java.util.Enumeration;
|
||||
|
||||
public class CoverToPfx {
|
||||
public static final String PKCS12 = "PKCS12";
|
||||
public static final String JKS = "JKS";
|
||||
public static final String PFX_KEYSTORE_FILE = "D:/idea_work/yexuejc/yexuejc-springboot/yexuejc-springboot-base/src/test/resources/lgfishing2.pfx";
|
||||
public static final String KEYSTORE_PASSWORD = "lgfishing2018";
|
||||
public static final String JKS_KEYSTORE_FILE = "D:/idea_work/yexuejc/yexuejc-springboot/yexuejc-springboot-base/src/test/resources/lgfishing2.keystore";
|
||||
|
||||
public static void coverTokeyStore() {
|
||||
try {
|
||||
KeyStore inputKeyStore = KeyStore.getInstance("PKCS12");
|
||||
FileInputStream fis = new FileInputStream(PFX_KEYSTORE_FILE );
|
||||
char[] nPassword = null;
|
||||
|
||||
if (( KEYSTORE_PASSWORD == null) || KEYSTORE_PASSWORD.trim().equals("" )) {
|
||||
nPassword = null;
|
||||
} else {
|
||||
nPassword = KEYSTORE_PASSWORD.toCharArray();
|
||||
}
|
||||
|
||||
inputKeyStore.load(fis, nPassword);
|
||||
fis.close();
|
||||
|
||||
KeyStore outputKeyStore = KeyStore.getInstance("JKS");
|
||||
|
||||
outputKeyStore.load( null, KEYSTORE_PASSWORD.toCharArray());
|
||||
|
||||
Enumeration<String> enums = inputKeyStore.aliases();
|
||||
|
||||
while (enums.hasMoreElements()) { // we are readin just one
|
||||
// certificate.
|
||||
|
||||
String keyAlias = enums.nextElement();
|
||||
|
||||
System. out.println( "alias=[" + keyAlias + "]");
|
||||
|
||||
if (inputKeyStore.isKeyEntry(keyAlias)) {
|
||||
Key key = inputKeyStore.getKey(keyAlias, nPassword);
|
||||
Certificate[] certChain = inputKeyStore.getCertificateChain(keyAlias);
|
||||
|
||||
outputKeyStore.setKeyEntry(keyAlias, key, KEYSTORE_PASSWORD.toCharArray(), certChain);
|
||||
}
|
||||
}
|
||||
|
||||
FileOutputStream out = new FileOutputStream(JKS_KEYSTORE_FILE );
|
||||
|
||||
outputKeyStore.store(out, nPassword);
|
||||
out.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void coverToPfx() {
|
||||
try {
|
||||
KeyStore inputKeyStore = KeyStore.getInstance("JKS");
|
||||
FileInputStream fis = new FileInputStream(JKS_KEYSTORE_FILE );
|
||||
char[] nPassword = null;
|
||||
|
||||
if (( KEYSTORE_PASSWORD == null) || KEYSTORE_PASSWORD.trim().equals("" )) {
|
||||
nPassword = null;
|
||||
} else {
|
||||
nPassword = KEYSTORE_PASSWORD.toCharArray();
|
||||
}
|
||||
|
||||
inputKeyStore.load(fis, nPassword);
|
||||
fis.close();
|
||||
|
||||
KeyStore outputKeyStore = KeyStore.getInstance("PKCS12");
|
||||
|
||||
outputKeyStore.load( null, KEYSTORE_PASSWORD.toCharArray());
|
||||
|
||||
Enumeration<String> enums = inputKeyStore.aliases();
|
||||
|
||||
while (enums.hasMoreElements()) { // we are readin just one
|
||||
// certificate.
|
||||
|
||||
String keyAlias = enums.nextElement();
|
||||
|
||||
System. out.println( "alias=[" + keyAlias + "]");
|
||||
|
||||
if (inputKeyStore.isKeyEntry(keyAlias)) {
|
||||
Key key = inputKeyStore.getKey(keyAlias, nPassword);
|
||||
Certificate[] certChain = inputKeyStore.getCertificateChain(keyAlias);
|
||||
|
||||
outputKeyStore.setKeyEntry(keyAlias, key, KEYSTORE_PASSWORD.toCharArray(), certChain);
|
||||
}
|
||||
}
|
||||
|
||||
FileOutputStream out = new FileOutputStream(PFX_KEYSTORE_FILE );
|
||||
|
||||
outputKeyStore.store(out, nPassword);
|
||||
out.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
coverToPfx();
|
||||
}
|
||||
}
|
|
@ -73,7 +73,7 @@ public class IndexCtrl {
|
|||
}
|
||||
|
||||
@RequestMapping(value = {"/3"})
|
||||
public Resps b(@RequestBody PagerVO pagerVO) {
|
||||
public Resps b(@RequestBody TaVO pagerVO) {
|
||||
System.out.println("请求参数:" + JsonUtil.obj2Json(pagerVO));
|
||||
Map map = new HashMap();
|
||||
map.put("page", 5);
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
package com.yexuejc.springboot.base.web;
|
||||
|
||||
import com.yexuejc.base.pojo.PagerVO;
|
||||
|
||||
/**
|
||||
* @author: maxf
|
||||
* @date: 2018/6/2 12:06
|
||||
*/
|
||||
public class TaVO extends PagerVO {
|
||||
|
||||
/**
|
||||
* ret : 0
|
||||
* ExpireTime : 2015/10/28 23:59:59
|
||||
* rettxt : OK
|
||||
* Token : 69296128A59798E2D423D3B1A9F766F4
|
||||
*/
|
||||
|
||||
private String ret;
|
||||
private String expireTime;
|
||||
private String rettxt;
|
||||
private String token;
|
||||
|
||||
public String getRet() {
|
||||
return ret;
|
||||
}
|
||||
|
||||
public void setRet(String ret) {
|
||||
this.ret = ret;
|
||||
}
|
||||
|
||||
public String getExpireTime() {
|
||||
return expireTime;
|
||||
}
|
||||
|
||||
public void setExpireTime(String expireTime) {
|
||||
this.expireTime = expireTime;
|
||||
}
|
||||
|
||||
public String getRettxt() {
|
||||
return rettxt;
|
||||
}
|
||||
|
||||
public void setRettxt(String rettxt) {
|
||||
this.rettxt = rettxt;
|
||||
}
|
||||
|
||||
public String getToken() {
|
||||
return token;
|
||||
}
|
||||
|
||||
public void setToken(String token) {
|
||||
this.token = token;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN NEW CERTIFICATE REQUEST-----
|
||||
MIICOTCCAaICAQAwgcgxCzAJBgNVBAYTAkNOMQ8wDQYDVQQIDAblm5vlt50xDzAN
|
||||
BgNVBAcMBuaIkOmDvTE+MDwGA1UECgw15oiQ6YO95p6B6Ie05oCd57u0572R57uc
|
||||
56eR5oqA5pyJ6ZmQ5YWs5Y+4LeiAgUfpkpPpsbwxOzA5BgNVBAsMMua3seWcs+mH
|
||||
keWkp+exs+e9kee7nOenkeaKgOaciemZkOWFrOWPuC3ogIFH6ZKT6bG8MRowGAYD
|
||||
VQQDExFoZWlrZW5nZGlhb3l1LmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
|
||||
gYEAl/bkrHyXiAyD88QrcMBYeb6yCmq+vYtwz1EwxIij0XbZgA2vC7OigLD1ac4L
|
||||
UGKGFaWAaDGwbadHBkaEFCzvNzViAIZrFNnL3dJ5hpQdsT0c/rhmFta7GMgjPEUr
|
||||
3wMAlTbCQ9dAPb6C4UULmBzyA5mstbAQP3GrLxL2MDKg2bUCAwEAAaAwMC4GCSqG
|
||||
SIb3DQEJDjEhMB8wHQYDVR0OBBYEFLZJptFXQcH6jR5OSeDaBE5tYPq6MA0GCSqG
|
||||
SIb3DQEBCwUAA4GBAEaT6DcuToKuNwNB3kyhxmrdfOlrP0gSsO4h4423+gqsbNIy
|
||||
pY9OyjnVtXGGeyPrhD0MxsacWwvV5SruycvNQEZtpgvX6p01hxK+IMk0Yjuh04Gp
|
||||
KHG15mxtZBLJPs/QtmVS7zF1AQP4DKBCv0rDoDW8zg4/22Y+bT64U8LtRvg3
|
||||
-----END NEW CERTIFICATE REQUEST-----
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,20 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIDLjCCApegAwIBAgIEAkwsIjANBgkqhkiG9w0BAQsFADCByDELMAkGA1UEBhMC
|
||||
Q04xDzANBgNVBAgMBuWbm+W3nTEPMA0GA1UEBwwG5oiQ6YO9MT4wPAYDVQQKDDXm
|
||||
iJDpg73mnoHoh7TmgJ3nu7TnvZHnu5znp5HmioDmnInpmZDlhazlj7gt6ICBR+mS
|
||||
k+mxvDE7MDkGA1UECwwy5rex5Zyz6YeR5aSn57Gz572R57uc56eR5oqA5pyJ6ZmQ
|
||||
5YWs5Y+4LeiAgUfpkpPpsbwxGjAYBgNVBAMTEWhlaWtlbmdkaWFveXUuY29tMCAX
|
||||
DTE4MDUyNzA0MDQ0NFoYDzIxMTgwNTAzMDQwNDQ0WjCByDELMAkGA1UEBhMCQ04x
|
||||
DzANBgNVBAgMBuWbm+W3nTEPMA0GA1UEBwwG5oiQ6YO9MT4wPAYDVQQKDDXmiJDp
|
||||
g73mnoHoh7TmgJ3nu7TnvZHnu5znp5HmioDmnInpmZDlhazlj7gt6ICBR+mSk+mx
|
||||
vDE7MDkGA1UECwwy5rex5Zyz6YeR5aSn57Gz572R57uc56eR5oqA5pyJ6ZmQ5YWs
|
||||
5Y+4LeiAgUfpkpPpsbwxGjAYBgNVBAMTEWhlaWtlbmdkaWFveXUuY29tMIGfMA0G
|
||||
CSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsI2RVILgGqA+SUxIhWPC+SvJHkGZJXF55
|
||||
4m5+sGkvXdL4Qd2rZKRZLk6nAFnJym4svuWommtfVXdWQZAJce1eg9cgjbj4EJnX
|
||||
77m0xEayoZhOnbRhUYx3XUviKeZwJY8Xwtv6LZu0S25HqkQa65LMJDVqNzi3xlll
|
||||
7uXwmc3NowIDAQABoyEwHzAdBgNVHQ4EFgQUb86SydPXdx8FO9FAlnXShVr3J6Yw
|
||||
DQYJKoZIhvcNAQELBQADgYEAZC0dpZ1x2xmoR5Sq0V3yqZ0NySZ7n49FmDr1GUy1
|
||||
WiyK4XwuOQJitu4gv/7NWwvNXqPwbjbKqLnQvYr+PO2duvnU6xMzB66C108fBPh1
|
||||
LU8gzMl7avm1pDKODVXN5Ovl0I7gx8N5XvjazjfXYchEPrvh91WkXqLkNxwd6cK3
|
||||
hag=
|
||||
-----END CERTIFICATE-----
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue