Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica-cloud-account
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
com.pica.cloud.account
pica-cloud-account
提交
99fd1988
提交
99fd1988
编写于
8月 27, 2019
作者:
rushui.chen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
20190827 注册接口定义
上级
d48b4134
流水线
#13704
已失败 于阶段
in 0 second
变更
9
流水线
1
显示空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
455 行增加
和
4 行删除
+455
-4
AccountBaseController.java
...ount/account/server/controller/AccountBaseController.java
+12
-1
RegisterController.java
...account/account/server/controller/RegisterController.java
+28
-3
EncryptEntity.java
...ca/cloud/account/account/server/entity/EncryptEntity.java
+40
-0
BaseRequest.java
...om/pica/cloud/account/account/server/req/BaseRequest.java
+56
-0
RegisterService.java
...cloud/account/account/server/service/RegisterService.java
+11
-0
RegisterServiceImpl.java
...d/account/account/server/service/RegisterServiceImpl.java
+15
-0
AESUtil.java
...a/com/pica/cloud/account/account/server/util/AESUtil.java
+92
-0
CryptoUtil.java
...om/pica/cloud/account/account/server/util/CryptoUtil.java
+67
-0
RSAUtil.java
...a/com/pica/cloud/account/account/server/util/RSAUtil.java
+134
-0
未找到文件。
server/src/main/java/com/pica/cloud/account/account/server/controller/AccountBaseController.java
浏览文件 @
99fd1988
...
...
@@ -17,10 +17,12 @@ import org.apache.commons.lang3.StringUtils;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.util.*
;
/**
* controller基类
*
* @author andong
* @create 2019/5/21
*/
...
...
@@ -76,7 +78,7 @@ public abstract class AccountBaseController extends BaseController {
try
{
Map
<
String
,
String
>
data
=
Object2Map
.
objectToMapString
(
"yyyy-MM-dd HH:mm:ss"
,
picaUser
,
new
String
[
0
]);
data
.
put
(
"sysCode"
,
sysCode
);
return
super
.
getRedisClient
().
saveToken
(
data
,
365
*
24
*
3600
);
//token有效期365天
return
super
.
getRedisClient
().
saveToken
(
data
,
365
*
24
*
3600
);
//token有效期365天
}
catch
(
Exception
ex
)
{
logger
.
error
(
"保存token失败,doctorId: {}"
,
picaUser
.
getId
());
return
StringUtils
.
EMPTY
;
...
...
@@ -125,4 +127,13 @@ public abstract class AccountBaseController extends BaseController {
logger
.
error
(
"发送短信失败"
);
}
}
public
int
getProductType
()
{
return
0
;
}
public
int
getSourceType
()
{
return
0
;
}
}
server/src/main/java/com/pica/cloud/account/account/server/controller/RegisterController.java
浏览文件 @
99fd1988
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
controller
;
import
com.pica.cloud.account.account.server.entity.EncryptEntity
;
import
com.pica.cloud.account.account.server.enums.EnumsType
;
import
com.pica.cloud.account.account.server.req.BaseRequest
;
import
com.pica.cloud.account.account.server.service.RegisterService
;
import
com.pica.cloud.account.account.server.util.AccountUtils
;
import
com.pica.cloud.account.account.server.util.CryptoUtil
;
import
com.pica.cloud.foundation.entity.PicaResponse
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@Api
(
"注册资源"
)
@RestController
public
class
RegisterController
{
@RequestMapping
(
"/register"
)
public
class
RegisterController
extends
AccountBaseController
{
@Autowired
private
RegisterService
registerService
;
@ApiOperation
(
"注册接口"
)
@PostMapping
(
value
=
""
)
public
PicaResponse
<
String
>
register
(
@RequestBody
EncryptEntity
entity
)
throws
Exception
{
BaseRequest
request
=
CryptoUtil
.
decrypt
(
entity
);
AccountUtils
.
checkMobilePhone
(
request
.
getMobile
());
AccountUtils
.
getAuthCodeKey
(
request
.
getSysCode
(),
EnumsType
.
SYSCODE_TYPE_REGISTER
.
getCode
()
+
""
);
request
.
setFlag
(
EnumsType
.
SYSCODE_TYPE_REGISTER
.
getCode
());
request
.
setProductType
(
super
.
getProductType
());
request
.
setSourceType
(
super
.
getSourceType
());
PicaResponse
picaResponse
=
registerService
.
register
(
request
);
return
picaResponse
;
}
}
server/src/main/java/com/pica/cloud/account/account/server/entity/EncryptEntity.java
0 → 100644
浏览文件 @
99fd1988
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
entity
;
/**
* 加解密数据模型
*/
public
class
EncryptEntity
{
/**
* 加密后的密文
*/
private
String
key
;
/**
* 加密后的数据
*/
private
String
content
;
public
String
getKey
()
{
return
key
;
}
public
void
setKey
(
String
key
)
{
this
.
key
=
key
;
}
public
String
getContent
()
{
return
content
;
}
public
void
setContent
(
String
content
)
{
this
.
content
=
content
;
}
@Override
public
String
toString
()
{
return
"EncryptEntity{"
+
"key='"
+
key
+
'\''
+
", content='"
+
content
+
'\''
+
'}'
;
}
}
server/src/main/java/com/pica/cloud/account/account/server/req/BaseRequest.java
0 → 100644
浏览文件 @
99fd1988
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
req
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
@ApiModel
public
class
BaseRequest
{
private
String
mobile
;
private
String
sysCode
;
private
int
flag
;
@ApiModelProperty
(
"产品线类型"
)
private
int
productType
;
@ApiModelProperty
(
"渠道来源"
)
private
int
sourceType
;
public
String
getMobile
()
{
return
mobile
;
}
public
void
setMobile
(
String
mobile
)
{
this
.
mobile
=
mobile
;
}
public
String
getSysCode
()
{
return
sysCode
;
}
public
void
setSysCode
(
String
sysCode
)
{
this
.
sysCode
=
sysCode
;
}
public
int
getFlag
()
{
return
flag
;
}
public
void
setFlag
(
int
flag
)
{
this
.
flag
=
flag
;
}
public
int
getProductType
()
{
return
productType
;
}
public
void
setProductType
(
int
productType
)
{
this
.
productType
=
productType
;
}
public
int
getSourceType
()
{
return
sourceType
;
}
public
void
setSourceType
(
int
sourceType
)
{
this
.
sourceType
=
sourceType
;
}
}
server/src/main/java/com/pica/cloud/account/account/server/service/RegisterService.java
0 → 100644
浏览文件 @
99fd1988
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
service
;
import
com.pica.cloud.account.account.server.req.BaseRequest
;
import
com.pica.cloud.foundation.entity.PicaResponse
;
public
interface
RegisterService
{
PicaResponse
register
(
BaseRequest
baseRequest
);
}
server/src/main/java/com/pica/cloud/account/account/server/service/RegisterServiceImpl.java
0 → 100644
浏览文件 @
99fd1988
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
service
;
import
com.pica.cloud.account.account.server.req.BaseRequest
;
import
com.pica.cloud.foundation.entity.PicaResponse
;
import
org.springframework.stereotype.Service
;
@Service
public
class
RegisterServiceImpl
implements
RegisterService
{
@Override
public
PicaResponse
register
(
BaseRequest
baseRequest
)
{
return
null
;
}
}
server/src/main/java/com/pica/cloud/account/account/server/util/AESUtil.java
0 → 100644
浏览文件 @
99fd1988
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
util
;
import
sun.misc.BASE64Decoder
;
import
sun.misc.BASE64Encoder
;
import
javax.crypto.Cipher
;
import
javax.crypto.spec.SecretKeySpec
;
import
java.security.Key
;
/**
* AES加解密工具类
*/
public
class
AESUtil
{
/**
* 指定加密算法为AES
*/
private
static
final
String
ALGORITHM
=
"AES"
;
/**
* UUID随机密钥:必须长度为16
*
* @return
*/
public
static
String
generateKeyString
()
{
//return UUID.randomUUID().toString().replaceAll("-", "").substring(0, 16);
return
"276e35e6f91d4ec1"
;
}
/**
* 根据密钥和算法生成Key
*
* @return
* @throws Exception
*/
private
static
Key
generateKey
(
String
keyString
)
throws
Exception
{
Key
key
=
new
SecretKeySpec
(
keyString
.
getBytes
(),
ALGORITHM
);
return
key
;
}
/**
* 用来进行加密的操作
*
* @param data
* @return
* @throws Exception
*/
public
static
String
encrypt
(
String
keyString
,
String
data
)
throws
Exception
{
Key
key
=
generateKey
(
keyString
);
Cipher
c
=
Cipher
.
getInstance
(
ALGORITHM
);
c
.
init
(
Cipher
.
ENCRYPT_MODE
,
key
);
byte
[]
encVal
=
c
.
doFinal
(
data
.
getBytes
());
String
encryptedValue
=
new
BASE64Encoder
().
encode
(
encVal
);
return
encryptedValue
;
}
/**
* 用来进行解密的操作
*
* @param encryptedData
* @return
* @throws Exception
*/
public
static
String
decrypt
(
String
keyString
,
String
encryptedData
)
throws
Exception
{
Key
key
=
generateKey
(
keyString
);
Cipher
c
=
Cipher
.
getInstance
(
ALGORITHM
);
c
.
init
(
Cipher
.
DECRYPT_MODE
,
key
);
byte
[]
decordedValue
=
new
BASE64Decoder
().
decodeBuffer
(
encryptedData
);
byte
[]
decValue
=
c
.
doFinal
(
decordedValue
);
String
decryptedValue
=
new
String
(
decValue
);
return
decryptedValue
;
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
System
.
out
.
println
(
generateKeyString
());
String
keyString
=
generateKeyString
();
//String keyString = "1234567890123456";
System
.
out
.
println
(
"密钥:"
+
keyString
);
String
source
=
"恭喜发财!"
;
// 要加密的字符串
System
.
out
.
println
(
"准备用密钥加密的字符串为:"
+
source
);
String
cryptograph
=
encrypt
(
keyString
,
source
);
// 生成的密文
System
.
out
.
print
(
"用密钥加密后的结果为:"
+
cryptograph
);
System
.
out
.
println
();
String
target
=
decrypt
(
keyString
,
cryptograph
);
// 解密密文
System
.
out
.
println
(
"用密钥解密后的字符串为:"
+
target
);
System
.
out
.
println
();
}
}
server/src/main/java/com/pica/cloud/account/account/server/util/CryptoUtil.java
0 → 100644
浏览文件 @
99fd1988
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
util
;
import
com.alibaba.fastjson.JSONObject
;
import
com.pica.cloud.account.account.server.entity.EncryptEntity
;
import
com.pica.cloud.account.account.server.req.BaseRequest
;
/**
* 加解密工具类
*/
public
class
CryptoUtil
{
/**
* 加密数据
*
* @param data
* @return
* @throws Exception
*/
public
static
EncryptEntity
encrypt
(
String
data
)
throws
Exception
{
//1、产生AES密钥
String
keyString
=
AESUtil
.
generateKeyString
();
//2、用AES法加密数据
String
content
=
AESUtil
.
encrypt
(
keyString
,
data
);
//3、用RSA加密AES密钥
String
finalKey
=
RSAUtil
.
encrypt
(
keyString
);
EncryptEntity
encryptEntity
=
new
EncryptEntity
();
encryptEntity
.
setContent
(
content
);
encryptEntity
.
setKey
(
finalKey
);
return
encryptEntity
;
}
/**
* 解密数据
*
* @param key
* @param data
* @return
*/
public
static
String
decrypt
(
String
key
,
String
data
)
throws
Exception
{
//获取解密密钥
String
decryptKey
=
RSAUtil
.
decrypt
(
key
);
//解密数据
String
content
=
AESUtil
.
decrypt
(
decryptKey
,
data
);
return
content
;
}
/**
* 解密数据
*
* @param encryptEntity
* @return
* @throws Exception
*/
public
static
BaseRequest
decrypt
(
EncryptEntity
encryptEntity
)
throws
Exception
{
//获取解密密钥
String
decryptKey
=
RSAUtil
.
decrypt
(
encryptEntity
.
getKey
());
//解密数据
String
content
=
AESUtil
.
decrypt
(
decryptKey
,
encryptEntity
.
getContent
());
//反序列化成对象
BaseRequest
request
=
(
BaseRequest
)
JSONObject
.
toJSON
(
content
);
return
request
;
}
}
server/src/main/java/com/pica/cloud/account/account/server/util/RSAUtil.java
0 → 100644
浏览文件 @
99fd1988
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
util
;
import
org.apache.tomcat.util.codec.binary.Base64
;
import
javax.crypto.Cipher
;
import
java.security.*
;
import
java.security.interfaces.RSAPrivateKey
;
import
java.security.interfaces.RSAPublicKey
;
import
java.security.spec.PKCS8EncodedKeySpec
;
import
java.security.spec.X509EncodedKeySpec
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* RSA加解密工具类
*/
public
class
RSAUtil
{
//用于封装随机产生的公钥与私钥
private
static
Map
<
Integer
,
String
>
keyMap
=
new
HashMap
<>();
private
static
final
String
privateKey
=
"MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAO+zh8bnUA+elnRy1BHKEGrbTmh/"
+
"r71zFboVTznwAuEzPnvOezQBOY+623mIXh86/cyCLlCRzbGm0Q5M3LSY6sTemNXtupVnb1lWwD1xDrSG0JsCgeS/weCLI9gHaknNuMfVlg+"
+
"5esYcy2JlyG5ldcJahCgAOog2lJr4pLUSj8fJAgMBAAECgYEAiJIlnjJU71FQL/Ds22XhjMB/IBMAMlTL4EYb6crSGTV1OF0g3TSFc1rniY"
+
"sk9W5LBKZ3dPhd1gZRvnAUn+EwgPh1bVBG0Z30vr2Ea0w9v+D3T96byeCKh+xoKQqG+Yp+u5w8v6MNNX6sVN2D0gks9YgY+2xGEeAf9kuF5"
+
"gpHhAECQQD65WyV3dI8uO4tQEBnS6LRAWVFuEZEWp1W8MXm5DUz/Tnsd7eAdg3VRdS1rZJ17pLa9umFtL/FUVWmw++zeABhAkEA9JPOqXlr"
+
"vB/GjLl9g3YJBpPjA7UhWHZ6vn8bUq55noengQQL0l2mrJfEFXVHLs0m9lV3tAURpgpuraLkd/ugaQJATFBITPVhozKkz4LBlCm/Zk9EXIa"
+
"GaPge73jg2TAEtsGJQtHPMPW3k21gG7ql19UvOgbsVMz7n6rzoHvshuwzQQJAY92WnQy/OOmgoQV8gplHxi/Mmk7zdrOqGu67sV8cueaaNs"
+
"v4J8WlsQOnRTvF/Q43wo3TeuY29p1749qHf5Z3QQJBANnZYSe93QlOT+6PFT1Dkv8osnOY/93CZYD2IvTpfXfqJnbBZ9bkSe7xcxIIqGO6M"
+
"JWlZjItnYBZLLHP3JKVgOQ="
;
private
static
final
String
publicKey
=
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDvs4fG51APnpZ0ctQRyhBq205of6+9cxW6FU858"
+
"ALhMz57zns0ATmPutt5iF4fOv3Mgi5Qkc2xptEOTNy0mOrE3pjV7bqVZ29ZVsA9cQ60htCbAoHkv8HgiyPYB2pJzbjH1ZYPuXrGHMtiZchu"
+
"ZXXCWoQoADqINpSa+KS1Eo/HyQIDAQAB"
;
/**
* 加密方法
*
* @param keyString
* @return
*/
public
static
String
encrypt
(
String
keyString
)
throws
Exception
{
return
encrypt
(
keyString
,
publicKey
);
}
/**
* 解密方法
*
* @param key
* @return
*/
public
static
String
decrypt
(
String
key
)
throws
Exception
{
return
decrypt
(
key
,
privateKey
);
}
/**
* 随机生成密钥对
*
* @throws NoSuchAlgorithmException
*/
public
static
void
genKeyPair
()
throws
NoSuchAlgorithmException
{
// KeyPairGenerator类用于生成公钥和私钥对,基于RSA算法生成对象
KeyPairGenerator
keyPairGen
=
KeyPairGenerator
.
getInstance
(
"RSA"
);
// 初始化密钥对生成器,密钥大小为96-1024位
keyPairGen
.
initialize
(
1024
,
new
SecureRandom
());
// 生成一个密钥对,保存在keyPair中
KeyPair
keyPair
=
keyPairGen
.
generateKeyPair
();
RSAPrivateKey
privateKey
=
(
RSAPrivateKey
)
keyPair
.
getPrivate
();
// 得到私钥
RSAPublicKey
publicKey
=
(
RSAPublicKey
)
keyPair
.
getPublic
();
// 得到公钥
String
publicKeyString
=
new
String
(
Base64
.
encodeBase64
(
publicKey
.
getEncoded
()));
// 得到私钥字符串
String
privateKeyString
=
new
String
(
Base64
.
encodeBase64
((
privateKey
.
getEncoded
())));
// 将公钥和私钥保存到Map
keyMap
.
put
(
0
,
publicKeyString
);
//0表示公钥
keyMap
.
put
(
1
,
privateKeyString
);
//1表示私钥
}
/**
* RSA公钥加密
*
* @param str 加密字符串
* @param publicKey 公钥
* @return 密文
* @throws Exception 加密过程中的异常信息
*/
public
static
String
encrypt
(
String
str
,
String
publicKey
)
throws
Exception
{
//base64编码的公钥
byte
[]
decoded
=
Base64
.
decodeBase64
(
publicKey
);
RSAPublicKey
pubKey
=
(
RSAPublicKey
)
KeyFactory
.
getInstance
(
"RSA"
).
generatePublic
(
new
X509EncodedKeySpec
(
decoded
));
//RSA加密
Cipher
cipher
=
Cipher
.
getInstance
(
"RSA"
);
cipher
.
init
(
Cipher
.
ENCRYPT_MODE
,
pubKey
);
String
outStr
=
Base64
.
encodeBase64String
(
cipher
.
doFinal
(
str
.
getBytes
(
"UTF-8"
)));
return
outStr
;
}
/**
* RSA私钥解密
*
* @param str 加密字符串
* @param privateKey 私钥
* @return 铭文
* @throws Exception 解密过程中的异常信息
*/
public
static
String
decrypt
(
String
str
,
String
privateKey
)
throws
Exception
{
//64位解码加密后的字符串
byte
[]
inputByte
=
Base64
.
decodeBase64
(
str
.
getBytes
(
"UTF-8"
));
//base64编码的私钥
byte
[]
decoded
=
Base64
.
decodeBase64
(
privateKey
);
RSAPrivateKey
priKey
=
(
RSAPrivateKey
)
KeyFactory
.
getInstance
(
"RSA"
).
generatePrivate
(
new
PKCS8EncodedKeySpec
(
decoded
));
//RSA解密
Cipher
cipher
=
Cipher
.
getInstance
(
"RSA"
);
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
priKey
);
String
outStr
=
new
String
(
cipher
.
doFinal
(
inputByte
));
return
outStr
;
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
//生成公钥和私钥
//genKeyPair();
keyMap
.
put
(
0
,
publicKey
);
keyMap
.
put
(
1
,
privateKey
);
//加密字符串
String
message
=
"df723820"
;
System
.
out
.
println
(
"随机生成的公钥为:"
+
keyMap
.
get
(
0
));
System
.
out
.
println
(
"随机生成的私钥为:"
+
keyMap
.
get
(
1
));
String
messageEn
=
encrypt
(
message
,
keyMap
.
get
(
0
));
System
.
out
.
println
(
message
+
"\t加密后的字符串为:"
+
messageEn
);
String
messageDe
=
decrypt
(
messageEn
,
keyMap
.
get
(
1
));
System
.
out
.
println
(
"还原后的字符串为:"
+
messageDe
);
}
}
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录