| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 国密改造-数字签名-SM2,SM4 -> 正文阅读 |
|
[网络协议]国密改造-数字签名-SM2,SM4 |
一. 请求报文变更 请求xml报文结构包含: 1. head报文 2. 业务报文 3. 其他报文 国密改造后,1和3不变,2主要是2个字段: MsgBody:? SM4加密的原业务节点 Sign:对MsgBody 进行SM2签名 ? 二. 关于秘钥 SM4 秘钥: 32位字符,我方告知银行,用于信息的对称加解密 SM2?: 我方:私钥,64位,用于签名; 公钥,130位(含04)给银行。另外P10文件(输入SM2公私钥、DN串,用工具生成)也要给银行,用于制作证书。 银行方: 公钥,130位(含04)字符,会给到我们,另外,公钥相对应的证书也会给我方。 准备4个方法: SM4加密,SM4解密, SM2签名,SM2验签。? 三. 关于证书 证书,对公钥的认证,防止合作方抵赖或者坏人对公钥的伪造。 证书越权威,安全性越高; 证书链为NORMAL_CERT(银行方) -> CCAS_COR_CERT(中间证书) -> CCAS_ROOT_CERT(根证书) 校验证书 1. 时间有效性:?CertHelper.certDateValidate(SM.NORMAL_CERT, new Date()); 2. 证书有效性: 一层一层往上校验, CertHelper.certSignatureValidate(SM.NORMAL_CERT, Base64.decode(SM.CCAS_COR_CERT));? //校验银行方和中间证书 CertHelper.certSignatureValidate(Base64.decode(SM.CCAS_COR_CERT), Base64.decode(SM.CCAS_ROOT_CERT)); //校验中间证书和根证书 3.?校验签名 signer.verifyWithCert(SM.NORMAL_CERT, signData, response.SIGN.getBytes()); //signData:?需验签的报文(SM4加密) ;? ?response.SIGN:?签名 可以看出,上面解签并没有用到银行给的公钥,走的是证书线路。 其实,证书和公钥是一一对应的。SM.NORMAL_CERT,是打开证书后,你可以看到的几百位的base64后的字符。 当然,你忽略证书线路,用公钥也是可以解签的。 ? |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:51:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |