diff --git a/PARAMS_RSA_DECRYPT_ENCRYPT.md b/PARAMS_RSA_DECRYPT_ENCRYPT.md index 0f6c0a1..758fdf0 100644 --- a/PARAMS_RSA_DECRYPT_ENCRYPT.md +++ b/PARAMS_RSA_DECRYPT_ENCRYPT.md @@ -1,5 +1,6 @@ # 加密解密功能介绍 +#### [公、私钥生成](RSA.md) #### 客户端解密(服务器端加密出参data) @@ -61,11 +62,11 @@ #### 客户端加密 (服务器端解密入参data) ->1.客户端先使用公钥加密,参数为Map类型
->然后ASCII码排序得到新的参数->result1=xxxxx&result2=xxxxx,再MD5的到sign
->加密新的参数得到data(也可以对原map JSON化后加密) +>1. 客户端先使用公钥加密,参数为Map类型
+> 1.1 参数先ASCII码排序得到新的参数->result1=xxxxx&result2=xxxxx,再MD5的到sign
+> 1.2 加密新的参数得到data(也可以对原map JSON化后加密) > ->2.API接收到json参数,解析为ParamsPO
+>2. API接收到json参数,解析为ParamsPO
>ParamsPO.data部分进行解密操作,解密后得到原始参数(result1=xxxxx&result2=xxxxx)做MD5校验 原始参数 diff --git a/RSA.md b/RSA.md new file mode 100644 index 0000000..50772b8 --- /dev/null +++ b/RSA.md @@ -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 \ No newline at end of file diff --git a/UPDATE.md b/UPDATE.md index 46952bf..d91fa37 100644 --- a/UPDATE.md +++ b/UPDATE.md @@ -1,6 +1,13 @@ uselaw-base 更新内容 ------------------- +#### version :1.0.9 +**time:**
+**branch:** master
+**update:**
+1. 更新base依赖 +# + #### version :1.0.8 **time:** 2018-5-4 09:54:18
**branch:** master
diff --git a/pom.xml b/pom.xml index 5caf521..31987f1 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.yexuejc.springboot yexuejc-springboot-parent - 1.0.8 + 1.0.9 pom ${project.artifactId} @@ -35,7 +35,7 @@ 1.2.0 3.4.2 - 1.1.2 + 1.1.3 0.7.0 1.1.46 1.10 diff --git a/yexuejc-springboot-base/pom.xml b/yexuejc-springboot-base/pom.xml index 8955976..7ca895f 100644 --- a/yexuejc-springboot-base/pom.xml +++ b/yexuejc-springboot-base/pom.xml @@ -9,7 +9,7 @@ com.yexuejc.springboot yexuejc-springboot-parent - 1.0.8 + 1.0.9 diff --git a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/autoconfigure/MutiRedisAutoConfiguration.java b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/autoconfigure/MutiRedisAutoConfiguration.java index db1476c..7de1f70 100644 --- a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/autoconfigure/MutiRedisAutoConfiguration.java +++ b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/autoconfigure/MutiRedisAutoConfiguration.java @@ -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 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 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 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 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 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 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 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 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 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 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 { diff --git a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/autoconfigure/WebAutoConfiguration.java b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/autoconfigure/WebAutoConfiguration.java index 13afaf7..845aa7f 100644 --- a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/autoconfigure/WebAutoConfiguration.java +++ b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/autoconfigure/WebAutoConfiguration.java @@ -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> converters) { super.configureMessageConverters(converters); converters.add(responseBodyConverter()); + converters.add(mappingJackson2HttpMessageConverter()); } @Override @@ -75,6 +92,7 @@ public class WebAutoConfiguration extends WebMvcConfigurerAdapter { /******************************************编码部分*****************************************************/ + /** * 添加拦截器 */ diff --git a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/constant/RedisConsts.java b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/constant/RedisConsts.java deleted file mode 100644 index 9be684a..0000000 --- a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/constant/RedisConsts.java +++ /dev/null @@ -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"; -} diff --git a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/filter/ParamsRequestBodyAdvice.java b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/filter/ParamsRequestBodyAdvice.java index f328977..8c9225b 100644 --- a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/filter/ParamsRequestBodyAdvice.java +++ b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/filter/ParamsRequestBodyAdvice.java @@ -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) { diff --git a/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/ApplicationTest.java b/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/test/ApplicationTest.java similarity index 75% rename from yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/ApplicationTest.java rename to yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/test/ApplicationTest.java index 9933978..e6d878f 100644 --- a/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/ApplicationTest.java +++ b/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/test/ApplicationTest.java @@ -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())); + + } } diff --git a/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/test/CoverToPfx.java b/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/test/CoverToPfx.java new file mode 100644 index 0000000..bb04605 --- /dev/null +++ b/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/test/CoverToPfx.java @@ -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 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 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(); + } +} \ No newline at end of file diff --git a/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/web/IndexCtrl.java b/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/web/IndexCtrl.java index eb34a45..1f9fe90 100644 --- a/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/web/IndexCtrl.java +++ b/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/web/IndexCtrl.java @@ -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); diff --git a/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/web/TaVO.java b/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/web/TaVO.java new file mode 100644 index 0000000..af321f8 --- /dev/null +++ b/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/web/TaVO.java @@ -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; + } +} \ No newline at end of file diff --git a/yexuejc-springboot-base/src/test/resources/lgfishing.csr b/yexuejc-springboot-base/src/test/resources/lgfishing.csr new file mode 100644 index 0000000..71dad2c --- /dev/null +++ b/yexuejc-springboot-base/src/test/resources/lgfishing.csr @@ -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----- diff --git a/yexuejc-springboot-base/src/test/resources/lgfishing.keystore b/yexuejc-springboot-base/src/test/resources/lgfishing.keystore index ff8a785..9730326 100644 Binary files a/yexuejc-springboot-base/src/test/resources/lgfishing.keystore and b/yexuejc-springboot-base/src/test/resources/lgfishing.keystore differ diff --git a/yexuejc-springboot-base/src/test/resources/lgfishing.p12 b/yexuejc-springboot-base/src/test/resources/lgfishing.p12 new file mode 100644 index 0000000..05c3365 Binary files /dev/null and b/yexuejc-springboot-base/src/test/resources/lgfishing.p12 differ diff --git a/yexuejc-springboot-base/src/test/resources/lgfishing2.cer b/yexuejc-springboot-base/src/test/resources/lgfishing2.cer new file mode 100644 index 0000000..34911f7 --- /dev/null +++ b/yexuejc-springboot-base/src/test/resources/lgfishing2.cer @@ -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----- diff --git a/yexuejc-springboot-base/src/test/resources/lgfishing2.keystore b/yexuejc-springboot-base/src/test/resources/lgfishing2.keystore new file mode 100644 index 0000000..d96c0a1 Binary files /dev/null and b/yexuejc-springboot-base/src/test/resources/lgfishing2.keystore differ diff --git a/yexuejc-springboot-base/src/test/resources/lgfishing2.pfx b/yexuejc-springboot-base/src/test/resources/lgfishing2.pfx new file mode 100644 index 0000000..6aae095 Binary files /dev/null and b/yexuejc-springboot-base/src/test/resources/lgfishing2.pfx differ