Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
smart_gov_platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
smart_gov_platform
Commits
f0fd6959
Commit
f0fd6959
authored
Mar 01, 2024
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加国密4加解密接口
parent
20bfcbd5
Changes
11
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
661 additions
and
5 deletions
+661
-5
base-manager/db/add.sql
base-manager/db/add.sql
+9
-0
base-manager/src/main/java/com/mortals/xhx/busiz/message/MessageService.java
...in/java/com/mortals/xhx/busiz/message/MessageService.java
+15
-0
base-manager/src/main/java/com/mortals/xhx/busiz/message/impl/MessageServiceImpl.java
...om/mortals/xhx/busiz/message/impl/MessageServiceImpl.java
+311
-0
base-manager/src/main/java/com/mortals/xhx/busiz/req/ApiReq.java
...nager/src/main/java/com/mortals/xhx/busiz/req/ApiReq.java
+23
-0
base-manager/src/main/java/com/mortals/xhx/busiz/req/MessageReq.java
...r/src/main/java/com/mortals/xhx/busiz/req/MessageReq.java
+49
-0
base-manager/src/main/java/com/mortals/xhx/busiz/req/PayApiRequestEntityVO.java
...java/com/mortals/xhx/busiz/req/PayApiRequestEntityVO.java
+30
-0
base-manager/src/main/java/com/mortals/xhx/busiz/rsp/ApiResp.java
...ager/src/main/java/com/mortals/xhx/busiz/rsp/ApiResp.java
+23
-0
base-manager/src/main/java/com/mortals/xhx/busiz/rsp/MessageResp.java
.../src/main/java/com/mortals/xhx/busiz/rsp/MessageResp.java
+19
-0
base-manager/src/main/java/com/mortals/xhx/busiz/web/MidSignApiController.java
.../java/com/mortals/xhx/busiz/web/MidSignApiController.java
+0
-5
base-manager/src/main/java/com/mortals/xhx/busiz/web/SecurityApiController.java
...java/com/mortals/xhx/busiz/web/SecurityApiController.java
+178
-0
base-manager/src/test/java/com/mortals/httpclient/system/system.http
...r/src/test/java/com/mortals/httpclient/system/system.http
+4
-0
No files found.
base-manager/db/add.sql
View file @
f0fd6959
...
...
@@ -227,3 +227,12 @@ ALTER TABLE mortals_sys_site_matter ADD COLUMN `agent` tinyint(2) DEFAULT '
ALTER
TABLE
mortals_sys_site_matter
ADD
COLUMN
`agentName`
varchar
(
64
)
COMMENT
'代办姓名'
;
ALTER
TABLE
mortals_sys_site_matter
ADD
COLUMN
`agentPhone`
varchar
(
32
)
COMMENT
'代办电话'
;
ALTER
TABLE
mortals_sys_site_matter
ADD
COLUMN
`agentPost`
varchar
(
64
)
COMMENT
'职务'
;
-- ----------------------------
2024
-
02
-
29
-- ----------------------------
UPDATE
mortals_sys_skin_base
SET
imageResolution
=
"1920x1080"
WHERE
imageResolution
=
"1"
;
UPDATE
mortals_sys_skin_base
SET
imageResolution
=
"1080x1920"
WHERE
imageResolution
=
"2"
;
UPDATE
mortals_sys_skin_base
SET
imageResolution
=
"1280x1280"
WHERE
imageResolution
=
"3"
;
\ No newline at end of file
base-manager/src/main/java/com/mortals/xhx/busiz/message/MessageService.java
0 → 100644
View file @
f0fd6959
package
com.mortals.xhx.busiz.message
;
import
com.mortals.xhx.busiz.req.MessageReq
;
import
com.mortals.xhx.busiz.rsp.MessageResp
;
public
interface
MessageService
{
MessageReq
decryptMessage
(
MessageReq
req
);
MessageReq
encryptMessage
(
MessageReq
req
);
MessageResp
signMessage
(
MessageReq
req
);
}
\ No newline at end of file
base-manager/src/main/java/com/mortals/xhx/busiz/message/impl/MessageServiceImpl.java
0 → 100644
View file @
f0fd6959
This diff is collapsed.
Click to expand it.
base-manager/src/main/java/com/mortals/xhx/busiz/req/ApiReq.java
0 → 100644
View file @
f0fd6959
package
com.mortals.xhx.busiz.req
;
import
lombok.Data
;
/**
* 工作流请求头信息
*
* @author: zxfei
* @date: 2021/8/25 9:50
*/
@Data
public
class
ApiReq
<
T
>
{
/**
* 业务平台标识(唯一)
*/
private
String
tenantId
;
/**
* 实体数据()
*/
private
T
entity
;
}
base-manager/src/main/java/com/mortals/xhx/busiz/req/MessageReq.java
0 → 100644
View file @
f0fd6959
package
com.mortals.xhx.busiz.req
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
public
class
MessageReq
implements
Serializable
{
/**
* key
*/
private
String
key
;
/**
* 加解密方式(如RSA,AES)
*/
private
String
algorithm
;
/**
* 秘钥
*/
private
String
password
;
private
String
private_key
;
/**
* 内容
*/
private
String
content
;
/**
* 解密内容
*/
private
String
decryptContent
;
private
String
url
;
private
String
dataSecret
=
"QZTiVtyFIUjMCVLs"
;
public
static
void
main
(
String
[]
args
)
{
// DeviceReq deviceReq = new DeviceReq();
// deviceReq.setIsAdmin();
// deviceReq.seti
}
}
base-manager/src/main/java/com/mortals/xhx/busiz/req/PayApiRequestEntityVO.java
0 → 100644
View file @
f0fd6959
package
com.mortals.xhx.busiz.req
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* 请求对象
*
* @author liuyang05
*/
@Data
public
class
PayApiRequestEntityVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
3968797265834488447L
;
/**
* 应用ID
*/
private
String
appid
;
/**
* 请求流水号
*/
private
String
aaz001
;
/**
* 请求参数数据
*/
private
String
data
;
}
\ No newline at end of file
base-manager/src/main/java/com/mortals/xhx/busiz/rsp/ApiResp.java
0 → 100644
View file @
f0fd6959
package
com.mortals.xhx.busiz.rsp
;
import
lombok.Data
;
/**
* @author karlhoo
*/
@Data
public
class
ApiResp
<
T
>
{
/**
* 结果编码
*/
private
int
code
;
/**
* 结果描述
*/
private
String
msg
;
/**
* 响应数据
*/
private
T
data
;
}
base-manager/src/main/java/com/mortals/xhx/busiz/rsp/MessageResp.java
0 → 100644
View file @
f0fd6959
package
com.mortals.xhx.busiz.rsp
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
public
class
MessageResp
implements
Serializable
{
/**
* content(AES加密)
*/
private
String
content
;
private
String
sign
;
}
base-manager/src/main/java/com/mortals/xhx/busiz/web/MidSignApiController.java
View file @
f0fd6959
package
com.mortals.xhx.busiz.web
;
import
cn.hutool.core.net.url.UrlBuilder
;
import
cn.hutool.core.util.RandomUtil
;
import
cn.hutool.http.HttpUtil
;
import
cn.hutool.http.Method
;
...
...
@@ -190,10 +189,6 @@ public class MidSignApiController {
log
.
info
(
"mid resp:"
+
bodyJson
.
toJSONString
());
return
Rest
.
ok
(
bodyJson
.
toJSONString
());
}
}
}
catch
(
Exception
e
)
{
log
.
error
(
"透传请求异常"
,
e
);
...
...
base-manager/src/main/java/com/mortals/xhx/busiz/web/SecurityApiController.java
0 → 100644
View file @
f0fd6959
package
com.mortals.xhx.busiz.web
;
import
cn.hutool.crypto.SmUtil
;
import
cn.hutool.crypto.asymmetric.SM2
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.mortals.xhx.busiz.message.MessageService
;
import
com.mortals.xhx.busiz.req.MessageReq
;
import
com.mortals.xhx.busiz.rsp.ApiResp
;
import
com.mortals.xhx.busiz.rsp.MessageResp
;
import
com.mortals.xhx.common.code.ApiRespCodeEnum
;
import
lombok.extern.slf4j.Slf4j
;
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
;
import
java.util.ArrayList
;
import
java.util.Base64
;
import
java.util.List
;
@RestController
@Slf4j
@RequestMapping
(
"/api"
)
public
class
SecurityApiController
{
@Autowired
private
MessageService
messageService
;
/**
* 解密
*
* @param req
* @return
*/
@PostMapping
(
"decrypt"
)
public
String
decrypt
(
@RequestBody
MessageReq
req
)
{
log
.
info
(
"【解密】【请求体】--> "
+
JSONObject
.
toJSONString
(
req
));
ApiResp
<
MessageReq
>
rsp
=
new
ApiResp
<>();
rsp
.
setCode
(
ApiRespCodeEnum
.
SUCCESS
.
getValue
());
try
{
MessageReq
messageReq
=
messageService
.
decryptMessage
(
req
);
rsp
.
setData
(
messageReq
);
}
catch
(
Exception
e
)
{
log
.
error
(
"接收数据失败"
,
e
);
rsp
.
setCode
(
ApiRespCodeEnum
.
FAILED
.
getValue
());
rsp
.
setMsg
(
e
.
getMessage
());
return
JSON
.
toJSONString
(
rsp
);
}
log
.
info
(
"响应【解密】【响应体】--> "
+
JSONObject
.
toJSONString
(
rsp
));
return
JSON
.
toJSONString
(
rsp
);
}
/**
* 批量解密
*
* @param reqList
* @return
*/
@PostMapping
(
"decryptBatch"
)
public
String
decryptBatch
(
@RequestBody
List
<
MessageReq
>
reqList
)
{
log
.
info
(
"【批量解密】【请求体】--> "
+
JSONObject
.
toJSONString
(
reqList
));
ApiResp
<
List
<
MessageReq
>>
rsp
=
new
ApiResp
<>();
rsp
.
setCode
(
ApiRespCodeEnum
.
SUCCESS
.
getValue
());
try
{
List
<
MessageReq
>
respList
=
new
ArrayList
<>();
reqList
.
stream
().
forEach
(
req
->{
MessageReq
messageReq
=
messageService
.
decryptMessage
(
req
);
respList
.
add
(
messageReq
);
});
rsp
.
setData
(
respList
);
}
catch
(
Exception
e
)
{
log
.
error
(
"接收数据失败"
,
e
);
rsp
.
setCode
(
ApiRespCodeEnum
.
FAILED
.
getValue
());
rsp
.
setMsg
(
e
.
getMessage
());
return
JSON
.
toJSONString
(
rsp
);
}
log
.
info
(
"响应【批量解密】【响应体】--> "
+
JSONObject
.
toJSONString
(
rsp
));
return
JSON
.
toJSONString
(
rsp
);
}
/**
* 加密
*
* @param req
* @return
*/
@PostMapping
(
"encrypt"
)
public
String
encrypt
(
@RequestBody
MessageReq
req
)
{
log
.
info
(
"【加密】【请求体】--> "
+
JSONObject
.
toJSONString
(
req
));
ApiResp
<
MessageReq
>
rsp
=
new
ApiResp
<>();
rsp
.
setCode
(
ApiRespCodeEnum
.
SUCCESS
.
getValue
());
try
{
MessageReq
messageReq
=
messageService
.
encryptMessage
(
req
);
rsp
.
setData
(
messageReq
);
}
catch
(
Exception
e
)
{
log
.
error
(
"接收数据失败"
,
e
);
rsp
.
setCode
(
ApiRespCodeEnum
.
FAILED
.
getValue
());
rsp
.
setMsg
(
e
.
getMessage
());
return
JSON
.
toJSONString
(
rsp
);
}
log
.
info
(
"响应【加密】【响应体】--> "
+
JSONObject
.
toJSONString
(
rsp
));
return
JSON
.
toJSONString
(
rsp
);
}
/**
* 批量加密
*
* @param reqList
* @return
*/
@PostMapping
(
"encryptBatch"
)
public
String
encryptBatch
(
@RequestBody
List
<
MessageReq
>
reqList
)
{
log
.
info
(
"【批量加密】【请求体】--> "
+
JSONObject
.
toJSONString
(
reqList
));
ApiResp
<
List
<
MessageReq
>>
rsp
=
new
ApiResp
<>();
rsp
.
setCode
(
ApiRespCodeEnum
.
SUCCESS
.
getValue
());
try
{
List
<
MessageReq
>
respList
=
new
ArrayList
<>();
reqList
.
stream
().
forEach
(
req
->{
MessageReq
messageReq
=
messageService
.
encryptMessage
(
req
);
respList
.
add
(
messageReq
);
});
rsp
.
setData
(
respList
);
}
catch
(
Exception
e
)
{
log
.
error
(
"接收数据失败"
,
e
);
rsp
.
setCode
(
ApiRespCodeEnum
.
FAILED
.
getValue
());
rsp
.
setMsg
(
e
.
getMessage
());
return
JSON
.
toJSONString
(
rsp
);
}
log
.
info
(
"响应【批量加密】【响应体】--> "
+
JSONObject
.
toJSONString
(
rsp
));
return
JSON
.
toJSONString
(
rsp
);
}
/**
* 签名
*
* @param req
* @return
*/
@PostMapping
(
"sign"
)
public
String
sign
(
@RequestBody
MessageReq
req
)
{
log
.
info
(
"【签名】【请求体】--> "
+
JSONObject
.
toJSONString
(
req
));
ApiResp
<
MessageResp
>
rsp
=
new
ApiResp
<>();
rsp
.
setCode
(
ApiRespCodeEnum
.
SUCCESS
.
getValue
());
try
{
MessageResp
messageResp
=
messageService
.
signMessage
(
req
);
rsp
.
setData
(
messageResp
);
}
catch
(
Exception
e
)
{
log
.
error
(
"接收数据失败"
,
e
);
rsp
.
setCode
(
ApiRespCodeEnum
.
FAILED
.
getValue
());
rsp
.
setMsg
(
e
.
getMessage
());
return
JSON
.
toJSONString
(
rsp
);
}
log
.
info
(
"响应【签名】【响应体】--> "
+
JSONObject
.
toJSONString
(
rsp
));
return
JSON
.
toJSONString
(
rsp
);
}
public
static
void
main
(
String
[]
args
)
{
SM2
sm2
=
SmUtil
.
sm2
();
String
content
=
"{\"access_key\":\"DYZWFWZX\",\"biz_content\":\"{\\\"appid\\\":\\\"uRsNCSjIRWaN\\\",\\\"aaz001\\\":\\\"202311246\\\",\\\"key_set\\\":\\\"0cHyD1AaGPJZQlkNbOBDdYZDOJG9ZKgfQx+Cg402jLG9k2dvIHUyIhczyilsD8V5AgEsRxySmCbP8QcA+l7p1aeOSJxCWZt\\\\\\/GEQrRFCWEAv9HgHRMUmaVPPn8DHtfS2zZSH\\\\\\/aNERu4SIfyl19GJVygjWglDixUwyRNvW0U0ZM6HMFZEqWV005hRbhk4APeZ+PH9t1wU0A2nGZnvzdrX6RRMYKboqkHPYl18nczQB3cA=\\\"}\",\"format\":\"json\",\"request_id\":\"2023112454559857\",\"timestamp\":\"1700811926506\",\"version\":\"1.0\"}"
;
String
password
=
"MIICSwIBADCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEA/////v////////////////////8AAAAA//////////8wRAQg/////v////////////////////8AAAAA//////////wEICjp+p6dn140TVqeS89lCafzl4n1FauPkt28vUFNlA6TBEEEMsSuLB8ZgRlfmQRGajnJlI/jC7/yZgvhcVpFiTNMdMe8Nzai9PZ3nFm9zuNraSFT0KmHfMYqR0AC3zLlITnwoAIhAP////7///////////////9yA99rIcYFK1O79Ak51UEjAgEBBIIBVTCCAVECAQEEIL0TuUlJwA2kCWlXlb+zSd/2Rpt4kf42vIJWq5VGH5NXoIHjMIHgAgEBMCwGByqGSM49AQECIQD////+/////////////////////wAAAAD//////////zBEBCD////+/////////////////////wAAAAD//////////AQgKOn6np2fXjRNWp5Lz2UJp/OXifUVq4+S3by9QU2UDpMEQQQyxK4sHxmBGV+ZBEZqOcmUj+MLv/JmC+FxWkWJM0x0x7w3NqL09necWb3O42tpIVPQqYd8xipHQALfMuUhOfCgAiEA/////v///////////////3ID32shxgUrU7v0CTnVQSMCAQGhRANCAATFqcMDO2aQJzPnu3LIm8uYBlNh8RwZfwEGBHiez2GFedbSDORLvkdagF0tLhlwXlU5KmM4fudIZoJVRNccY1pq"
;
byte
[]
sign
=
sm2
.
sign
(
content
.
getBytes
(),
password
.
getBytes
());
System
.
out
.
println
(
Base64
.
getEncoder
().
encodeToString
(
sign
));
}
}
base-manager/src/test/java/com/mortals/httpclient/system/system.http
View file @
f0fd6959
...
...
@@ -192,3 +192,7 @@ Content-Type: application/json
"secondOrganize": "hongqi"
}
###字典获取
GET {{baseUrl}}/param/dict?first=SkinBase&second=imageResolution
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment