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
提交
a400cd65
提交
a400cd65
编写于
8月 27, 2019
作者:
rushui.chen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
20190827 日志异步存储
上级
7cb7027e
流水线
#13687
已失败 于阶段
in 2 second
变更
17
流水线
1
显示空白字符变更
内嵌
并排
正在显示
17 个修改的文件
包含
217 行增加
和
428 行删除
+217
-428
LoginController.java
...ud/account/account/server/controller/LoginController.java
+3
-1
AccountInfo.java
...pica/cloud/account/account/server/entity/AccountInfo.java
+3
-1
LogPasswordModify.java
...loud/account/account/server/entity/LogPasswordModify.java
+3
-1
LoginLog.java
...om/pica/cloud/account/account/server/entity/LoginLog.java
+8
-4
EnumsType.java
...om/pica/cloud/account/account/server/enums/EnumsType.java
+7
-3
PicaLogEntity.java
.../pica/cloud/account/account/server/log/PicaLogEntity.java
+18
-0
PicaLogTask.java
...om/pica/cloud/account/account/server/log/PicaLogTask.java
+49
-0
PicaLogUtils.java
...m/pica/cloud/account/account/server/log/PicaLogUtils.java
+24
-0
LogLoginMapper.java
...a/cloud/account/account/server/mapper/LogLoginMapper.java
+1
-1
LogPwdModifyMapper.java
...oud/account/account/server/mapper/LogPwdModifyMapper.java
+1
-1
AccountLoginServiceImpl.java
.../account/server/service/impl/AccountLoginServiceImpl.java
+9
-4
PasswordServiceImpl.java
...ount/account/server/service/impl/PasswordServiceImpl.java
+2
-2
AccountUtils.java
.../pica/cloud/account/account/server/util/AccountUtils.java
+2
-2
BASE64Utils.java
...m/pica/cloud/account/account/server/util/BASE64Utils.java
+0
-67
RSAUtils.java
.../com/pica/cloud/account/account/server/util/RSAUtils.java
+85
-339
LogPasswordModifyMapper.xml
...er/src/main/resources/mybatis/LogPasswordModifyMapper.xml
+1
-1
LoginLogMapper.xml
server/src/main/resources/mybatis/LoginLogMapper.xml
+1
-1
未找到文件。
server/src/main/java/com/pica/cloud/account/account/server/controller/LoginController.java
浏览文件 @
a400cd65
...
...
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import
com.pica.cloud.account.account.server.entity.*
;
import
com.pica.cloud.account.account.server.enums.EnumsType
;
import
com.pica.cloud.account.account.server.enums.ExceptionType
;
import
com.pica.cloud.account.account.server.log.PicaLogUtils
;
import
com.pica.cloud.account.account.server.req.RegisterReq
;
import
com.pica.cloud.account.account.server.service.*
;
import
com.pica.cloud.account.account.server.util.AccountUtils
;
...
...
@@ -54,7 +55,6 @@ public class LoginController extends AccountBaseController {
@Autowired
private
AccountUtils
accountUtils
;
@ApiOperation
(
"登录接口"
)
@PostMapping
(
"/login"
)
public
PicaResponse
<
String
>
loginByPassword
(
@RequestBody
String
params
)
throws
Exception
{
...
...
@@ -230,7 +230,9 @@ public class LoginController extends AccountBaseController {
account
.
setCreatTime
(
new
Date
());
account
.
setRegisterSource
(
super
.
getSourceType
());
String
newToken
=
tokenUtils
.
generateToken
(
account
);
AccountUser
accountUser
=
cacheClient
.
getToken
(
newToken
,
AccountUser
.
class
);
accountUser
.
setLoginFrom
(
super
.
getSourceType
());
accountUser
.
setLoginPlatform
(
super
.
getProductType
());
accountUser
.
setLoginIp
(
super
.
getIpAddr
());
...
...
server/src/main/java/com/pica/cloud/account/account/server/entity/AccountInfo.java
浏览文件 @
a400cd65
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
entity
;
import
com.pica.cloud.account.account.server.log.PicaLogEntity
;
import
java.util.Date
;
public
class
AccountInfo
{
public
class
AccountInfo
extends
PicaLogEntity
{
private
Long
id
;
private
String
password
;
...
...
server/src/main/java/com/pica/cloud/account/account/server/entity/LogPasswordModify.java
浏览文件 @
a400cd65
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
entity
;
import
com.pica.cloud.account.account.server.log.PicaLogEntity
;
import
java.util.Date
;
public
class
LogPasswordModify
{
public
class
LogPasswordModify
extends
PicaLogEntity
{
private
Long
id
;
...
...
server/src/main/java/com/pica/cloud/account/account/server/entity/LoginLog.java
浏览文件 @
a400cd65
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
entity
;
import
com.pica.cloud.account.account.server.log.PicaLogEntity
;
import
java.util.Date
;
public
class
LoginLog
{
public
class
LoginLog
extends
PicaLogEntity
{
public
LoginLog
()
{
this
.
loginTime
=
new
Date
();
...
...
@@ -86,8 +88,9 @@ public class LoginLog {
return
loginType
;
}
public
void
setLoginType
(
Integer
loginType
)
{
public
LoginLog
setLoginType
(
Integer
loginType
)
{
this
.
loginType
=
loginType
;
return
this
;
}
public
String
getLoginIp
()
{
...
...
@@ -102,16 +105,17 @@ public class LoginLog {
return
loginPlatform
;
}
public
void
setLoginPlatform
(
Integer
loginPlatform
)
{
public
LoginLog
setLoginPlatform
(
Integer
loginPlatform
)
{
this
.
loginPlatform
=
loginPlatform
;
return
this
;
}
public
Integer
getLoginStatus
()
{
return
loginStatus
;
}
public
void
setLoginStatus
(
Integer
loginStatus
)
{
this
.
loginStatus
=
loginStatus
;
}
public
Integer
getCreateId
()
{
...
...
server/src/main/java/com/pica/cloud/account/account/server/enums/EnumsType.java
浏览文件 @
a400cd65
...
...
@@ -32,10 +32,14 @@ public enum EnumsType {
SYSCODE_TYPE_RESET_PASSWORD
(
4
,
"重置密码"
),
//联合登录类型
UNION_LOGIN_WE_CHAT
(
1
,
"微信"
),
UNION_LOGIN_QQ
(
2
,
"QQ"
),
union_login_blog
(
3
,
"微博"
);
UNION_LOGIN_WE_CHAT
(
1
,
"微信"
),
UNION_LOGIN_QQ
(
2
,
"QQ"
),
union_login_blog
(
3
,
"微博"
),
//日志类型枚举
LOG_TYPE_LOGIN
(
1
,
"登录日志"
),
LOG_TYPE_PASSWORD
(
2
,
"密码更新日志"
),
LOG_TYPE_USER_INFO
(
3
,
"用户信息更新日志"
);
private
int
code
;
private
String
type
;
...
...
server/src/main/java/com/pica/cloud/account/account/server/log/PicaLogEntity.java
0 → 100644
浏览文件 @
a400cd65
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
log
;
/**
* 日志记录
*/
public
class
PicaLogEntity
{
//标记当前记录的是哪种日志
private
int
logType
;
public
int
getLogType
()
{
return
logType
;
}
public
void
setLogType
(
int
logType
)
{
this
.
logType
=
logType
;
}
}
server/src/main/java/com/pica/cloud/account/account/server/log/PicaLogTask.java
0 → 100644
浏览文件 @
a400cd65
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
log
;
import
com.pica.cloud.account.account.server.entity.AccountInfo
;
import
com.pica.cloud.account.account.server.entity.LogPasswordModify
;
import
com.pica.cloud.account.account.server.entity.LoginLog
;
import
com.pica.cloud.account.account.server.enums.EnumsType
;
import
com.pica.cloud.account.account.server.mapper.AccountDetailsMapper
;
import
com.pica.cloud.account.account.server.mapper.LogPwdModifyMapper
;
import
com.pica.cloud.account.account.server.mapper.LogLoginMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
public
class
PicaLogTask
implements
Runnable
{
@Autowired
private
LogLoginMapper
loginLogMapper
;
@Autowired
private
LogPwdModifyMapper
logPasswordModifyMapper
;
@Autowired
private
AccountDetailsMapper
accountDetailsMapper
;
/**
* 日志类型
*/
private
int
type
;
/**
* 日志内容
*/
private
PicaLogEntity
picaLogEntity
;
PicaLogTask
(
PicaLogEntity
picaLogEntity
)
{
this
.
picaLogEntity
=
picaLogEntity
;
type
=
picaLogEntity
.
getLogType
();
}
@Override
public
void
run
()
{
if
(
type
==
EnumsType
.
LOG_TYPE_LOGIN
.
getCode
())
{
loginLogMapper
.
insertSelective
((
LoginLog
)
picaLogEntity
);
}
else
if
(
type
==
EnumsType
.
LOG_TYPE_PASSWORD
.
getCode
())
{
logPasswordModifyMapper
.
insertSelective
((
LogPasswordModify
)
picaLogEntity
);
}
else
if
(
type
==
EnumsType
.
LOG_TYPE_USER_INFO
.
getCode
())
{
accountDetailsMapper
.
insertSelective
((
AccountInfo
)
picaLogEntity
);
}
}
}
server/src/main/java/com/pica/cloud/account/account/server/log/PicaLogUtils.java
0 → 100644
浏览文件 @
a400cd65
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
log
;
import
org.springframework.stereotype.Component
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
@Component
public
class
PicaLogUtils
{
/**
* 开启一个线程池
*/
ExecutorService
executor
=
Executors
.
newFixedThreadPool
(
30
);
/**
* 日志记录方法
*
* @param picaLogEntity
*/
public
void
info
(
PicaLogEntity
picaLogEntity
)
{
executor
.
submit
(
new
PicaLogTask
(
picaLogEntity
));
}
}
server/src/main/java/com/pica/cloud/account/account/server/mapper/Log
inLog
Mapper.java
→
server/src/main/java/com/pica/cloud/account/account/server/mapper/Log
Login
Mapper.java
浏览文件 @
a400cd65
...
...
@@ -3,7 +3,7 @@ package com.pica.cloud.account.account.server.mapper;
import
com.pica.cloud.account.account.server.entity.LoginLog
;
public
interface
Log
inLog
Mapper
{
public
interface
Log
Login
Mapper
{
int
insert
(
LoginLog
record
);
...
...
server/src/main/java/com/pica/cloud/account/account/server/mapper/LogP
asswor
dModifyMapper.java
→
server/src/main/java/com/pica/cloud/account/account/server/mapper/LogP
w
dModifyMapper.java
浏览文件 @
a400cd65
...
...
@@ -3,7 +3,7 @@ package com.pica.cloud.account.account.server.mapper;
import
com.pica.cloud.account.account.server.entity.LogPasswordModify
;
public
interface
LogP
asswor
dModifyMapper
{
public
interface
LogP
w
dModifyMapper
{
int
deleteByPrimaryKey
(
Long
id
);
int
insert
(
LogPasswordModify
record
);
...
...
server/src/main/java/com/pica/cloud/account/account/server/service/impl/AccountLoginServiceImpl.java
浏览文件 @
a400cd65
...
...
@@ -4,8 +4,9 @@ import com.pica.cloud.account.account.server.entity.AccountContact;
import
com.pica.cloud.account.account.server.entity.AccountInfo
;
import
com.pica.cloud.account.account.server.entity.AccountUser
;
import
com.pica.cloud.account.account.server.entity.LoginLog
;
import
com.pica.cloud.account.account.server.enums.EnumsType
;
import
com.pica.cloud.account.account.server.log.PicaLogUtils
;
import
com.pica.cloud.account.account.server.mapper.AccountDetailsMapper
;
import
com.pica.cloud.account.account.server.mapper.LoginLogMapper
;
import
com.pica.cloud.account.account.server.service.AccountContactService
;
import
com.pica.cloud.account.account.server.service.AccountLoginService
;
import
com.pica.cloud.account.account.server.util.AccountUtils
;
...
...
@@ -16,19 +17,23 @@ import org.springframework.stereotype.Service;
@Service
public
class
AccountLoginServiceImpl
implements
AccountLoginService
{
@Autowired
private
LoginLogMapper
loginLogMapper
;
@Autowired
private
AccountContactService
accountContactServer
;
@Autowired
private
AccountDetailsMapper
accountDetailsMapper
;
@Autowired
private
PicaLogUtils
picaLogUtils
;
@Override
public
void
insertLoginLog
(
AccountUser
accountUser
,
Integer
loginType
,
Integer
status
)
{
LoginLog
loginLog
=
AccountUtils
.
getLoginLog
(
accountUser
);
loginLog
.
setLoginStatus
(
status
);
loginLog
.
setLoginType
(
loginType
);
loginLogMapper
.
insertSelective
(
loginLog
);
loginLog
.
setLogType
(
EnumsType
.
LOG_TYPE_LOGIN
.
getCode
());
picaLogUtils
.
info
(
loginLog
);
// loginLogMapper.insertSelective(loginLog);
}
@Override
...
...
server/src/main/java/com/pica/cloud/account/account/server/service/impl/PasswordServiceImpl.java
浏览文件 @
a400cd65
...
...
@@ -6,7 +6,7 @@ import com.pica.cloud.account.account.server.entity.AccountInfo;
import
com.pica.cloud.account.account.server.entity.LogPasswordModify
;
import
com.pica.cloud.account.account.server.mapper.AccountContactMapper
;
import
com.pica.cloud.account.account.server.mapper.AccountDetailsMapper
;
import
com.pica.cloud.account.account.server.mapper.LogP
asswor
dModifyMapper
;
import
com.pica.cloud.account.account.server.mapper.LogP
w
dModifyMapper
;
import
com.pica.cloud.account.account.server.req.ForgetPasswordReq
;
import
com.pica.cloud.account.account.server.req.PasswordReq
;
import
com.pica.cloud.account.account.server.service.PasswordService
;
...
...
@@ -21,7 +21,7 @@ public class PasswordServiceImpl implements PasswordService {
private
AccountDetailsMapper
accountDetailsMapper
;
@Autowired
private
LogP
asswor
dModifyMapper
logPasswordModifyMapper
;
private
LogP
w
dModifyMapper
logPasswordModifyMapper
;
@Autowired
private
AccountContactMapper
accountContactMapper
;
...
...
server/src/main/java/com/pica/cloud/account/account/server/util/AccountUtils.java
浏览文件 @
a400cd65
...
...
@@ -107,8 +107,8 @@ public class AccountUtils {
* @return
*/
public
static
<
T
>
T
getRequestEntity
(
String
params
,
Class
<
T
>
zClass
)
throws
Exception
{
// String json = RSAUtils.decryptByPrivateKey(params,RSAUtils.PRIVATE_KEY
);
return
JSONObject
.
parseObject
(
params
,
zClass
);
String
json
=
EncryptCreateUtil
.
dencrypt
(
params
);
return
JSONObject
.
parseObject
(
json
,
zClass
);
}
/**
...
...
server/src/main/java/com/pica/cloud/account/account/server/util/BASE64Utils.java
已删除
100644 → 0
浏览文件 @
7cb7027e
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
util
;
import
sun.misc.BASE64Decoder
;
import
sun.misc.BASE64Encoder
;
import
java.security.MessageDigest
;
public
class
BASE64Utils
{
public
static
final
String
KEY_SHA
=
"SHA"
;
public
static
final
String
KEY_MD5
=
"MD5"
;
/**
* BASE64解密
*
* @param key
* @return
* @throws Exception
*/
public
static
byte
[]
decryptBASE64
(
String
key
)
throws
Exception
{
return
(
new
BASE64Decoder
()).
decodeBuffer
(
key
);
}
/**
* BASE64加密
*
* @param key
* @return
* @throws Exception
*/
public
static
String
encryptBASE64
(
byte
[]
key
)
throws
Exception
{
return
(
new
BASE64Encoder
()).
encodeBuffer
(
key
);
}
/**
* MD5加密
*
* @param data
* @return
* @throws Exception
*/
public
static
byte
[]
encryptMD5
(
byte
[]
data
)
throws
Exception
{
MessageDigest
md5
=
MessageDigest
.
getInstance
(
KEY_MD5
);
md5
.
update
(
data
);
return
md5
.
digest
();
}
/**
* SHA加密
*
* @param data
* @return
* @throws Exception
*/
public
static
byte
[]
encryptSHA
(
byte
[]
data
)
throws
Exception
{
MessageDigest
sha
=
MessageDigest
.
getInstance
(
KEY_SHA
);
sha
.
update
(
data
);
return
sha
.
digest
();
}
}
server/src/main/java/com/pica/cloud/account/account/server/util/RSAUtils.java
浏览文件 @
a400cd65
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
util
;
import
com.alibaba.fastjson.JSONObject
;
import
javax.crypto.Cipher
;
import
com.pica.cloud.foundation.utils.utils.EncryptCreateUtil
;
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.Base64
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* RSA加解密工具类
*/
public
class
RSAUtils
extends
BASE64Utils
{
/**
* 不能修改
*/
public
static
final
String
PUBLIC_KEY
=
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCOzS18i+vI6UdPB3snRz1BzwPyaLRHPwlT4a3lu"
+
"9ETUDbe2yKH+4lriAJpUOEA7oxEF+rucoDpFFcLMt3wx9yqnFNkyhz5FRt7ijUskzJHEHla/uPDyaenAEjYZtToIsUlhlmTSpDtQVXAoXIl5/"
+
"JF1QcdRpxGJrSwn5QgmXaZ+QIDAQAB"
;
public
class
RSAUtils
{
private
static
Map
<
Integer
,
String
>
keyMap
=
new
HashMap
<
Integer
,
String
>();
//用于封装随机产生的公钥与私钥
/**
* 不能修改
*/
public
static
final
String
PRIVATE_KEY
=
"MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAI7NLXyL68jpR08HeydHPUHPA/JotEc/"
+
"CVPhreW70RNQNt7bIof7iWuIAmlQ4QDujEQX6u5ygOkUVwsy3fDH3KqcU2TKHPkVG3uKNSyTMkcQeVr+48PJp6cASNhm1OgixSWGWZNKkO1BVcC"
+
"hciXn8kXVBx1GnEYmtLCflCCZdpn5AgMBAAECgYBJp6Sdh+IO19vy9E3ePY1oAynq/3x0/xuFi3LReuVlC8uxeN+/ucrwjs+HmLLlcyUf/iIr6R"
+
"16mwYmfY8iIUQ8ZOCM8Wfqw/1l3WpsUygU08O8JKj9mZJmb8cmLhe7ldL/I5mdLt/VqQExemEnDJVp2B1Cj095P40Ug3aH4j/UcQJBAPJvIlKP8"
+
"oXP282gwQQD+dulTsVk3o5tziJcp2CsS3O+3aIa/mIYrxKlifdex7I6s7VPqSLXhJE+W/aplvFDJ00CQQCWys6iQfsGvXlwnhIL0aw6yMOlkMgV"
+
"xqo03A2aGJMCJQN2XYzuAXG2V54Utd1psGc5im7TlwJfh8ORC3iqCx9dAkAPkADFCgaIfnperdYWGuc8KVVwKHR88iGMZSQ9eXHygSsbD96Kj4k"
+
"Viljb71KkZ05H8lAqM2mIJVej8ukEncn1AkAl3iRqJvutQ6PdnjSV9z+zO3u2dldo8I0J3UElM4qnfTgTX4bmtkIiMnqmZM2Hnx8tGhCe3ktgRi"
+
"3cnO7edRCZAkEA0Ga3amAEafBN0LEP7UzrWQ3tMoytZ51snEKJHhobGLxzJCxNvwm0KQKEru24THYKGeVYUo/kjYWbiBvm3aEsYw=="
;
public
static
final
String
privateKey
=
"MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMm7RmZA2q81N6KCIOcEdEP2w5mQ"
+
"4/3r9hJMadsHPxfsK/k8dNKRCg+rD0abtWs+Ldi7Y7GSN6LB00wW+8wQFAvWr7SVL3jCxpc0zSXPKNZqHyh3Tnn+fj8GMhjMgzaDtb5HcEX"
+
"cOMHNP26CJb3nLEV/7MC8hN8zPtqieNBcEnUHAgMBAAECgYBsmxFsrY/OchUwvWQfW6uIh4qI25OTOfzxnwgCbmVOaMzH0v+F+aX0B4Ei32"
+
"ONiB1AqKokiHbBfh5WwazwENvpCtTJyaX0H/mwQs9/ECitzkhJcbev8zGFWuMB3E19NDshcnHxtMclupPPZ4IkvaiXKhbfrga2xZtvXmgsL"
+
"eVROQJBAOzw087YysB8wDoKjWurEnka87wUEDmUKVm5rZC9p3mxWmlPB2Y5CuoBBMpuZJjasUssORx3/cboeDmdzLOVAcUCQQDZ9Wgh5iz9"
+
"c0ZfFdjfL9rVTnn6nMA/8cscrQf9Jzc4Gjej+SX5qRBqsBKGSXXwI2mneGr5NjXEdnJ5hIt5wMRbAkEArPlTZ5pUyhlIrBawD34gSlEmxpN"
+
"PFPnZBivLTfNmpCyZeG+9Ux8pnJOJz86vmfdtnxd1yha/KcrkmgtdOWz6kQJAPGsp1ZPPzuZAkKUmvB+w4sZhS9Zd+JvXOPjCKSvQw82ItP"
+
"ygyUdTVK/AQtdkSRAX/qODy9d6Kh7HduYGH9cO1wJBAJQVW/C/mzbg9HKV3Vdj3Wp59Cq4Y19jpTnWS0S25q1cAZwmhmiuyzHh0xDT1iXGk"
+
"qSdzSEFbNWlEQHHVCyasWo="
;
private
static
final
String
publicKey
=
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJu0ZmQNqvNTeigiDnBHRD9sOZkOP96/YSTGnbB"
+
"z8X7Cv5PHTSkQoPqw9Gm7VrPi3Yu2OxkjeiwdNMFvvMEBQL1q+0lS94wsaXNM0lzyjWah8od055/n4/BjIYzIM2g7W+R3BF3DjBzT9ugiW9"
+
"5yxFf+zAvITfMz7aonjQXBJ1BwIDAQAB"
;
public
static
final
String
KEY_ALGORITHM
=
"RSA"
;
public
static
final
String
SIGNATURE_ALGORITHM
=
"MD5withRSA
"
;
public
static
void
main
(
String
[]
args
)
throws
Exception
{
String
message
=
"{\"mobile\":\"13024112588\",\"password\":\"qq123456\"}
"
;
// private static final String PUBLIC_KEY = "RSAPublicKey";
// private static final String PRIVATE_KEY = "RSAPrivateKey";
String
encrypt
=
EncryptCreateUtil
.
encrypt
(
message
);
System
.
out
.
println
(
encrypt
);
System
.
out
.
println
(
EncryptCreateUtil
.
dencrypt
(
encrypt
));
/**
* 用私钥对信息生成数字签名
*
* @param data 加密数据
* @param privateKey 私钥
* @return
* @throws Exception
*/
public
static
String
sign
(
String
data
,
String
privateKey
)
throws
Exception
{
return
sign
(
data
.
getBytes
(),
privateKey
);
}
/**
* 用私钥对信息生成数字签名
*
* @param data 加密数据
* @param privateKey 私钥
* @return
* @throws Exception
*/
public
static
String
sign
(
byte
[]
data
,
String
privateKey
)
throws
Exception
{
// 解密由base64编码的私钥
byte
[]
keyBytes
=
decryptBASE64
(
privateKey
);
// 构造PKCS8EncodedKeySpec对象
PKCS8EncodedKeySpec
pkcs8KeySpec
=
new
PKCS8EncodedKeySpec
(
keyBytes
);
// KEY_ALGORITHM 指定的加密算法
KeyFactory
keyFactory
=
KeyFactory
.
getInstance
(
KEY_ALGORITHM
);
//生成公钥和私钥
genKeyPair
();
//加密字符串
// String message = "13024112588";
// 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);
// 取私钥匙对象
PrivateKey
priKey
=
keyFactory
.
generatePrivate
(
pkcs8KeySpec
);
// String messageEn = encrypt(message, publicKey);
// System.out.println(message + "\t加密后的字符串为:" + messageEn);
// String messageDe = decrypt(messageEn, privateKey);
// System.out.println("还原后的字符串为:" + messageDe);
// 用私钥对信息生成数字签名
Signature
signature
=
Signature
.
getInstance
(
SIGNATURE_ALGORITHM
);
signature
.
initSign
(
priKey
);
signature
.
update
(
data
);
return
encryptBASE64
(
signature
.
sign
());
}
/**
*
校验数字签名
*
随机生成密钥对
*
* @param data 加密数据
* @param publicKey 公钥
* @param sign 数字签名
* @return 校验成功返回true 失败返回false
* @throws Exception
*/
public
static
boolean
verify
(
String
data
,
String
publicKey
,
String
sign
)
throws
Exception
{
return
verify
(
data
.
getBytes
(),
publicKey
,
sign
);
* @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
(
org
.
apache
.
tomcat
.
util
.
codec
.
binary
.
Base64
.
encodeBase64
(
publicKey
.
getEncoded
()));
// 得到私钥字符串
String
privateKeyString
=
new
String
(
org
.
apache
.
tomcat
.
util
.
codec
.
binary
.
Base64
.
encodeBase64
((
privateKey
.
getEncoded
())));
// 将公钥和私钥保存到Map
keyMap
.
put
(
0
,
publicKeyString
);
//0表示公钥
keyMap
.
put
(
1
,
privateKeyString
);
//1表示私钥
}
/**
*
校验数字签名
*
RSA公钥加密
*
* @param
data 加密数据
* @param
str 加密字符串
* @param publicKey 公钥
* @param sign 数字签名
* @return 校验成功返回true 失败返回false
* @throws Exception
*/
public
static
boolean
verify
(
byte
[]
data
,
String
publicKey
,
String
sign
)
throws
Exception
{
// 解密由base64编码的公钥
byte
[]
keyBytes
=
decryptBASE64
(
publicKey
);
// 构造X509EncodedKeySpec对象
X509EncodedKeySpec
keySpec
=
new
X509EncodedKeySpec
(
keyBytes
);
// KEY_ALGORITHM 指定的加密算法
KeyFactory
keyFactory
=
KeyFactory
.
getInstance
(
KEY_ALGORITHM
);
// 取公钥匙对象
PublicKey
pubKey
=
keyFactory
.
generatePublic
(
keySpec
);
Signature
signature
=
Signature
.
getInstance
(
SIGNATURE_ALGORITHM
);
signature
.
initVerify
(
pubKey
);
signature
.
update
(
data
);
// 验证签名是否正常
return
signature
.
verify
(
decryptBASE64
(
sign
));
}
/**
* 解密<br>
* 用私钥解密
*
* @param data
* @param key
* @return
* @throws Exception
*/
public
static
String
decryptByPrivateKey
(
String
data
,
String
key
)
throws
Exception
{
return
new
String
(
decryptByPrivateKey
(
decryptBASE64
(
data
),
key
));
}
/**
* 解密<br>
* 用私钥解密
*
* @param data
* @param key
* @return
* @throws Exception
*/
public
static
byte
[]
decryptByPrivateKey
(
byte
[]
data
,
String
key
)
throws
Exception
{
// 对密钥解密
byte
[]
keyBytes
=
decryptBASE64
(
key
);
// 取得私钥
PKCS8EncodedKeySpec
pkcs8KeySpec
=
new
PKCS8EncodedKeySpec
(
keyBytes
);
KeyFactory
keyFactory
=
KeyFactory
.
getInstance
(
KEY_ALGORITHM
);
Key
privateKey
=
keyFactory
.
generatePrivate
(
pkcs8KeySpec
);
// 对数据解密
Cipher
cipher
=
Cipher
.
getInstance
(
keyFactory
.
getAlgorithm
());
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
privateKey
);
return
cipher
.
doFinal
(
data
);
}
/**
* 解密<br>
* 用私钥解密
*
* @param data
* @param key
* @return
* @throws Exception
*/
public
static
String
decryptByPublicKey
(
String
data
,
String
key
)
throws
Exception
{
return
new
String
(
decryptByPublicKey
(
decryptBASE64
(
data
),
key
));
}
/**
* 解密<br>
* 用私钥解密
*
* @param data
* @param key
* @return
* @throws Exception
*/
public
static
byte
[]
decryptByPublicKey
(
byte
[]
data
,
String
key
)
throws
Exception
{
// 对密钥解密
byte
[]
keyBytes
=
decryptBASE64
(
key
);
// 取得公钥
X509EncodedKeySpec
x509KeySpec
=
new
X509EncodedKeySpec
(
keyBytes
);
KeyFactory
keyFactory
=
KeyFactory
.
getInstance
(
KEY_ALGORITHM
);
Key
publicKey
=
keyFactory
.
generatePublic
(
x509KeySpec
);
// 对数据解密
Cipher
cipher
=
Cipher
.
getInstance
(
keyFactory
.
getAlgorithm
());
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
publicKey
);
return
cipher
.
doFinal
(
data
);
}
/**
* 加密<br>
* 用公钥加密
*
* @param data
* @param key
* @return
* @throws Exception
* @return 密文
* @throws Exception 加密过程中的异常信息
*/
public
static
String
encryptByPublicKey
(
String
data
,
String
key
)
throws
Exception
{
return
encryptBASE64
(
encryptByPublicKey
(
data
.
getBytes
(),
key
));
public
static
String
encrypt
(
String
str
,
String
publicKey
)
throws
Exception
{
//base64编码的公钥
byte
[]
decoded
=
org
.
apache
.
tomcat
.
util
.
codec
.
binary
.
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
=
org
.
apache
.
tomcat
.
util
.
codec
.
binary
.
Base64
.
encodeBase64String
(
cipher
.
doFinal
(
str
.
getBytes
(
"UTF-8"
)));
return
outStr
;
}
/**
* 加密<br>
* 用公钥加密
* RSA私钥解密
*
* @param data
* @param key
* @return
* @throws Exception
*/
public
static
byte
[]
encryptByPublicKey
(
byte
[]
data
,
String
key
)
throws
Exception
{
// 对公钥解密
byte
[]
keyBytes
=
decryptBASE64
(
key
);
// 取得公钥
X509EncodedKeySpec
x509KeySpec
=
new
X509EncodedKeySpec
(
keyBytes
);
KeyFactory
keyFactory
=
KeyFactory
.
getInstance
(
KEY_ALGORITHM
);
Key
publicKey
=
keyFactory
.
generatePublic
(
x509KeySpec
);
// 对数据加密
Cipher
cipher
=
Cipher
.
getInstance
(
keyFactory
.
getAlgorithm
());
cipher
.
init
(
Cipher
.
ENCRYPT_MODE
,
publicKey
);
return
cipher
.
doFinal
(
data
);
}
/**
* 加密<br>
* 用私钥加密
*
* @param data
* @param key
* @return
* @throws Exception
*/
public
static
String
encryptByPrivateKey
(
String
data
,
String
key
)
throws
Exception
{
return
encryptBASE64
(
encryptByPrivateKey
(
data
.
getBytes
(),
key
));
}
/**
* 加密<br>
* 用私钥加密
*
* @param data
* @param key
* @return
* @throws Exception
*/
public
static
byte
[]
encryptByPrivateKey
(
byte
[]
data
,
String
key
)
throws
Exception
{
// 对密钥解密
byte
[]
keyBytes
=
decryptBASE64
(
key
);
// 取得私钥
PKCS8EncodedKeySpec
pkcs8KeySpec
=
new
PKCS8EncodedKeySpec
(
keyBytes
);
KeyFactory
keyFactory
=
KeyFactory
.
getInstance
(
KEY_ALGORITHM
);
Key
privateKey
=
keyFactory
.
generatePrivate
(
pkcs8KeySpec
);
// 对数据加密
Cipher
cipher
=
Cipher
.
getInstance
(
keyFactory
.
getAlgorithm
());
cipher
.
init
(
Cipher
.
ENCRYPT_MODE
,
privateKey
);
return
cipher
.
doFinal
(
data
);
}
/**
* 取得私钥
*
* @param keyMap
* @return
* @throws Exception
*/
public
static
String
getPrivateKey
(
Map
<
String
,
Object
>
keyMap
)
throws
Exception
{
Key
key
=
(
Key
)
keyMap
.
get
(
PRIVATE_KEY
);
return
encryptBASE64
(
key
.
getEncoded
());
}
/**
* 取得公钥
*
* @param keyMap
* @return
* @throws Exception
*/
public
static
String
getPublicKey
(
Map
<
String
,
Object
>
keyMap
)
throws
Exception
{
Key
key
=
(
Key
)
keyMap
.
get
(
PUBLIC_KEY
);
return
encryptBASE64
(
key
.
getEncoded
());
}
/**
* 初始化密钥
*
* @return
* @throws Exception
*/
public
static
Map
<
String
,
Object
>
initKey
()
throws
Exception
{
KeyPairGenerator
keyPairGen
=
KeyPairGenerator
.
getInstance
(
KEY_ALGORITHM
);
keyPairGen
.
initialize
(
1024
);
KeyPair
keyPair
=
keyPairGen
.
generateKeyPair
();
// 公钥
RSAPublicKey
publicKey
=
(
RSAPublicKey
)
keyPair
.
getPublic
();
// 私钥
RSAPrivateKey
privateKey
=
(
RSAPrivateKey
)
keyPair
.
getPrivate
();
Map
<
String
,
Object
>
keyMap
=
new
HashMap
<
String
,
Object
>(
2
);
keyMap
.
put
(
PUBLIC_KEY
,
publicKey
);
keyMap
.
put
(
PRIVATE_KEY
,
privateKey
);
return
keyMap
;
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
// String[] keyPair = getKeyPair();
// System.out.println("公钥:" + keyPair[0]);
// System.out.println("私钥:" + keyPair[1]);
//
// String str = "测试加解密效果";
// //公钥加密
// String encrypt = encrypt(str, getPublicKey());
// //私钥解密
// String decrypt = decrypt(encrypt, getPrivateKey());
// System.out.println(decrypt);
// Map<String, Object> map = RSAUtils.initKey();
// String publicKey = RSAUtils.getPublicKey(map);
// String privateKey = RSAUtils.getPrivateKey(map);
// System.out.println("公钥:" + publicKey);
// System.out.println("私钥:" + privateKey);
// String data = "Java是世界上最好的编程语言";
// String encryptData = RSAUtils.encryptByPublicKey(data, PUBLIC_KEY);
// System.out.println("加密后:" + encryptData);
// String decryptData = RSAUtils.decryptByPrivateKey(encryptData, PRIVATE_KEY);
// System.out.println("解密后:" + decryptData);
System
.
out
.
println
(
"----------------->"
);
//测试数据
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"mobilePhone"
,
"13024112588"
);
jsonObject
.
put
(
"flag"
,
"0"
);
String
params
=
jsonObject
.
toJSONString
();
String
result
=
encryptByPublicKey
(
params
,
PUBLIC_KEY
);
String
decrypt1
=
decryptByPrivateKey
(
result
,
PRIVATE_KEY
);
System
.
out
.
println
(
result
);
System
.
out
.
println
(
decrypt1
);
* @param str 加密字符串
* @param privateKey 私钥
* @return 铭文
* @throws Exception 解密过程中的异常信息
*/
public
static
String
decrypt
(
String
str
,
String
privateKey
)
throws
Exception
{
//64位解码加密后的字符串
byte
[]
inputByte
=
org
.
apache
.
tomcat
.
util
.
codec
.
binary
.
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
;
}
}
server/src/main/resources/mybatis/LogPasswordModifyMapper.xml
浏览文件 @
a400cd65
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace=
"com.pica.cloud.account.account.server.mapper.LogP
asswor
dModifyMapper"
>
<mapper
namespace=
"com.pica.cloud.account.account.server.mapper.LogP
w
dModifyMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pica.cloud.account.account.server.entity.LogPasswordModify"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"mobile_phone"
property=
"mobilePhone"
jdbcType=
"VARCHAR"
/>
...
...
server/src/main/resources/mybatis/LoginLogMapper.xml
浏览文件 @
a400cd65
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace=
"com.pica.cloud.account.account.server.mapper.Log
inLog
Mapper"
>
<mapper
namespace=
"com.pica.cloud.account.account.server.mapper.Log
Login
Mapper"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pica.cloud.account.account.server.entity.LoginLog"
>
<id
column=
"id"
property=
"id"
jdbcType=
"INTEGER"
/>
<result
column=
"acct_id"
property=
"acctId"
jdbcType=
"INTEGER"
/>
...
...
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录