SM2无证书及隐式证书公钥机制签名和加密过程详解(五)

news2024/11/29 6:39:07

在能够解析隐式证书实例的基础上(SM2无证书及隐式证书公钥机制签名和加密过程详解(四)-CSDN博客),这里介绍如何通过隐式证书机制实现签名验签及加密解密。

(5)隐式证书机制签名验签过程

5.1签名过程

输入:
M - message digest('6D65737361676520646967657374'H)
ICA - '00030183082122232425262728008000000A0808080808080808080909090002002373008400C8812183DB65BF80F08E3FEA9758A9490F2C257A2D8ADEAA59DA786CBFAFEF221E78ADB4'H
IDA - '8000000A0808080808080808080909090002002373008400C8'H
dA - '43E0BBFDFFE6224ACCDB6C2905E41A27C1AB0CC141F47D516C42E400FAED8500'H
n - 'FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123'H

计算:
e = SM3(ICA||M)
  = 'CF308D3912BFD34444F7EDB5379160E74D4CEF12159C9749C16A391CE3946A8B'H
随机数k = '34914C20251A59A2C311102944C600430A02285A0433144228142A1848004C14'H
(x1,y1) = ('80C8022B011044A1392310CD3B7E722E444B68D8B20E948A8517E5BD8BB92531'H, '1214F7E5C4D4121DE8845B5D81F138A25707C7600FC63A62D2F007C056FC0804'H)
r = (e+x1) mod n = '4FF88F6513D017E57E1AFE82730FD3161F94787FA5E526A8F2C62AD135784E99'H
s = (k-[r]dA)/(dA+1) mod n = 'BF6CCA55B7AB45D033577A2AF860DB5F0F0D6C9F12957F545B2BC02AEDCF903A'H

输出:(r,s)

5.2验签过程

输入:
M - message digest('6D65737361676520646967657374'H)
ICA - '00030183082122232425262728008000000A0808080808080808080909090002002373008400C8812183DB65BF80F08E3FEA9758A9490F2C257A2D8ADEAA59DA786CBFAFEF221E78ADB4'H
IDA - '8000000A0808080808080808080909090002002373008400C8'H
n - 'FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123'H
KGC证书(Ppub)
计算:
HA = SM3(ENTLA||IDA||a||b||Xg||Yg||Xpub||Ypub)
   = '2138FC2CBF4B591D156757D998A245BAEAD4FFA85586342EFFDA6D5F33BE9384'H
基于ICA解压缩获得WA=(Xwa,Ywa)
Xwa = 'DB65BF80F08E3FEA9758A9490F2C257A2D8ADEAA59DA786CBFAFEF221E78ADB4'H
Ywa = '0728185A257F64B79DFA929C16C987ED956FB32D00B6CAF7678E56E66E01530F'H
\lambda = SM3(Xwa||Ywa||HA)
 = 'D343E4E6679DBDBFBFED3F7E9EF2491DEDF1FC14D6372A5A2530C731846D8F21'H
 PA = WA + [\lambda]Ppub = (Xp,Yp)
 Xp = '5E6203B3E5B8B4C6FDA394C9ED0940C4143D7AECC933C129A3B5CB1A6A950D1B'H
 Yp = 'A0CFE288A04D33DD6BA589DA3AB397F75A6ED2CDFD9108AB29B29CD40A624BD5'H
e = SM3(ICA||M)
[s]G+[r+s]PA = (x1,y1)
r' = (e+x1) mod n
比较r'是否与r相同

(6)隐式证书机制加密解密过程

6.1加密过程

输入:
M - '01010101'H
ICA - '00030183082122232425262728008000000A0808080808080808080909090002002373008400C8812183DB65BF80F08E3FEA9758A9490F2C257A2D8ADEAA59DA786CBFAFEF221E78ADB4'H
IDA - '8000000A0808080808080808080909090002002373008400C8'H
n - 'FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123'H
KGC证书(Ppub)
计算:
HA = SM3(ENTLA||IDA||a||b||Xg||Yg||Xpub||Ypub)
   = '2138FC2CBF4B591D156757D998A245BAEAD4FFA85586342EFFDA6D5F33BE9384'H
基于ICA解压缩获得WA=(Xwa,Ywa)
Xwa = 'DB65BF80F08E3FEA9758A9490F2C257A2D8ADEAA59DA786CBFAFEF221E78ADB4'H
Ywa = '0728185A257F64B79DFA929C16C987ED956FB32D00B6CAF7678E56E66E01530F'H
 \lambda = SM3(Xwa||Ywa||HA)
 = 'D343E4E6679DBDBFBFED3F7E9EF2491DEDF1FC14D6372A5A2530C731846D8F21'H
 PA = WA + [\lambda]Ppub = (Xp,Yp)
 Xp = '5E6203B3E5B8B4C6FDA394C9ED0940C4143D7AECC933C129A3B5CB1A6A950D1B'H
 Yp = 'A0CFE288A04D33DD6BA589DA3AB397F75A6ED2CDFD9108AB29B29CD40A624BD5'H
 随机数k = '0E548BCA4F4EBB616BBD2FBB670E8B0289CD1B7DA7893751A9EA5ECAF93DB649'H
 c1 = [k]G = '207254CA421B003D4604B278BE0F369A763C6498324BD70FD835B75DAD8F7765F16872734F9BCF91AD7C8817A456FB6802F60919C9975852BD3E8A17DEE4683B'H
 c2 = 'E8EC1894'H
 c3 = 'E67067DEA229D24D2C98F6A089E01687A34D87DBD908124FD05F186C842BBCAC'H
 输出:c1||c3||c2

6.2解密过程

输入:
dA-'43E0BBFDFFE6224ACCDB6C2905E41A27C1AB0CC141F47D516C42E400FAED8500'H
c1||c3||c2
按照SM2解密算法即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2192049.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis SpringBoot项目学习

Redis 是一个高性能的key-value内存数据库。它支持常用的5种数据结构:String字符串、Hash哈希表、List列表、Set集合、Zset有序集合 等数据类型。 Redis它解决了2个问题: 第一个是:性能 通常数据库的读操作,一般都要几十毫秒&…

【AUTOSAR 基础软件】COM模块详解(通信)

文章包含了AUTOSAR基础软件(BSW)中COM模块相关的内容详解。本文从AUTOSAR规范解析,ISOLAR-AB配置以及模块相关代码分析三个维度来帮读者清晰的认识和了解COM这一基础软件模块。文中涉及的ISOLAR-AB配置以及模块相关代码都是依托于ETAS提供的工…

一条广告变现3W+,半个月涨粉30W!简直太香了!

今天给大家分享个变现很猛的赛道, 这个赛道,我一开始关注到的时候,是一两个月前吧, 当时看到的时候,相关的笔记流量很猛, 而且相关的账号,起的号也很多, 我当时是看到那么多人都…

我有一张图,我怎么让midjourney按照这张图继续生成呢?

使用文字生成图片是一种基本的功能,但是还有一种场景,不是从文字生成图片,而是基于已有的一张图片生成另一张图片,这个时候,就需要以图生图的功能了。 以图生图:image to image generator 以图生图技术让我们见识到…

CSP-J/S 复赛算法 并查集-Hash表

文章目录 前言并查集并查集是什么?并查集的应用举几个并查集的例子更加详细的介绍合并两个集合判断元素的关系 并查集在树中的表示方法并查集在树中的表示概念 字符串图示例初始状态合并操作示例最终结构 查找操作和路径压缩示例 并查集的工作原理判断元素是否在同一…

Linux下静态库与动态库制作及分文件编程

Linux下静态库与动态库制作及分文件编程 文章目录 Linux下静态库与动态库制作及分文件编程1.分文件编程1.1优点1.2操作逻辑1.3示例 2.Linux库的概念3.静态库的制作与使用3.1优缺点3.2命名规则3.3制作步骤3.4开始享用 4.动态库的制作与使用4.1优缺点4.2动态库命名规则4.3制作步骤…

Redis:list类型

Redis:list类型 list命令非阻塞LPUSHLRANGELPUSHXRPUSHRPUSHXLPOPRPOPLINDEXLINSERTLLENLREMLTRIMLSET 阻塞BLPOPBRPOP 内部编码ziplistlinkedlistquicklist 几乎每种语言都有顺序表、数组、链表这样的顺序结构,Redis也做出了相应的支持。 如图&#xff…

RAG:检索增强生成技术概览

Why 将大模型应用于实际业务场景时会发现,通用的基础大模型基本无法满足我们的实际业务需求,主要有以下几方面原因: 知识的局限性:大模型对于一些实时性的、非公开的或离线的数据是无法获取到的。幻觉问题:所有的AI模…

【Python游戏开发】贪吃蛇游戏demo拓展

拓展上一项目【Python游戏开发】贪吃蛇 实现穿墙效果 # 检测游戏是否结束 def check_gameover():global finished# 移除蛇头位置超过窗口判断for n in range(len(body) - 1):if(body[n].x snake_head.x and body[n].y snake_head.y):finished True # 状态检测 def ch…

嘴尚绝卤味:健康美味的双重奏

在当今快节奏的生活中,人们对美食的追求不再仅仅停留于味蕾的满足,更加注重食物的健康与营养。在这一背景下,"嘴尚绝卤味"以其独特的健康理念与精湛的制作工艺,成为了市场上备受瞩目的卤味品牌。本文将从"嘴尚绝卤…

Linux运维01:VMware创建虚拟机

视频链接:05.新建VM虚拟机_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1nW411L7xm/?p14&spm_id_from333.880.my_history.page.click&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.点击“创建虚拟机” 2.选择“自定义(高级&#xff0…

15分钟学 Python 第41天:Python 爬虫入门(六)第二篇

Day41:Python爬取猫眼电影网站的电影信息 1. 项目背景 在本项目中,我们将使用 Python 爬虫技术从猫眼电影网站抓取电影信息。猫眼电影是一个知名的电影信息平台,提供了丰富的电影相关数据。通过这个练习,您将深入学习如何抓取动…

小白必看一文彻底搞懂 Transformer(图解+手撕)

Transformers 亮相以来彻底改变了深度学习模型。 今天,我们将揭示 Transformers 背后的核心概念:注意力机制、编码器-解码器架构、多头注意力等等。 通过 Python 代码片段,让你深入了解其原理。 技术交流群 前沿技术资讯、算法交流、求职…

用IMX6UL开发板编写按键输入实验

在之前我们都是讲解如何使用IMX6UL的GPIO输出控制等功能,IMX6U的IO不仅能作为输出,而且也可以作为输入,而我们开发板上具有一个按键,按键肯定是连接了一个IO口的额,我们在这一节将会把IO配置成输入功能,读取…

JAVA基础面试题汇总(持续更新)

1、精确运算场景使用浮点型运算问题 精确运算场景(如金融领域计算应计利息)计算数字,使用浮点型,由于精度丢失问题,会导致计算后的结果和预期不一致,使用Bigdecimal类型解决此问题,示例代码如下…

Java类的生命周期浅析

知识前提 在了解类的生命周期之前,有必要先了解一下jvm的内存结构。如下所示: 在了解完jvm的内存结构之后,就知道了例如堆区,栈区,常量池和方法区等概念。 也了解到了,编写的代码,是先需要通过…

使用pytdx获取股票信息总结

使用pytdx获取股票相关信息汇总 行情接口标准行情对接总结界面展示性能问题数据可靠性 附录代码 行情接口 pytdx中提供了hq(标准行情)及exhq(扩展市场行情)两种接口,扩展市场目前已经失效无法使用。 标准行情 这里只…

4. Getter和Setter注解与lombok

文章目录 1. 什么是Getter和Setter注解2. 什么是lombokjava自带的jar包 3. 从maven仓库里找lombok相关jar包4. 把jar包导入项目另一个jar包导入途径 5. 正式使用注解① 问题② 解决方案提示 6. 如果还想对某个成员变量添加限制怎么办7. 内容出处 1. 什么是Getter和Setter注解 官…

【包教包会】速通LLM《从头开始构建大型语言模型》免费pdf分享

介绍 在当今人工智能技术飞速发展的时代,大型语言模型(LLM)作为聊天机器人、文本生成和理解等应用的核心,已经成为研究和商业领域的关注焦点。尽管这些模型的应用无处不在,但对于大多数开发者来说,它们的工…

AI正悄然地影响着企业数字化转型

2022年底发布的ChatGPT将人工智能技术上升到了一个新的高度。如今,人工智能正彻底改变数字转型的进程,为企业提供优化运营和提升客户体验的机会。利用算法、数据分析、机器学习等人工智能技术结合企业自身情况,可以推动企业持续创新&#xff…