This commit is contained in:
yexuejc 2018-06-02 13:18:05 +08:00
parent fe9e443ddf
commit 3606ba57fa
19 changed files with 330 additions and 56 deletions

View File

@ -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校验
原始参数

22
RSA.md Normal file
View File

@ -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

View File

@ -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/>

View File

@ -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>

View File

@ -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>

View File

@ -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 {

View File

@ -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 {
/******************************************编码部分*****************************************************/
/**
* 添加拦截器
*/

View File

@ -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";
}

View File

@ -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) {

View File

@ -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()));
}
}

View File

@ -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();
}
}

View File

@ -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);

View File

@ -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;
}
}

View File

@ -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-----

View File

@ -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-----