SM2 - 公钥加密算法
符号
A,B:使用公钥密码系统的两个用户。
密钥派生函数
设密码杂凑函数为
密钥派生函数
输入:比特串
输出:长度为
- 初始化一个32比特构成的计数器
; - 对
从 到 执行:
2.1. 计算 ;
2.2. ; - 若
是整数,令 ,否则令 为 最左边的 比特; - 令
。
加密算法
设需要发送的消息为比特串
为了对明文
- 用随机数发生器产生随机数
; - 计算椭圆曲线点
; - 计算椭圆曲线点
,若 是无穷远点,则报错并退出; - 计算椭圆曲线点
; - 计算
,若 为全0比特串,则返回步骤1; - 计算
; - 计算
; - 输出密文
。
解密算法
设
为了对密文
- 从
中取出比特串 ,验证 是否满足椭圆曲线方程,若不满足则报错并退出; - 计算椭圆曲线点
,若 是无穷远点,则报错并退出; - 计算
; - 计算
,若 为全0比特串,则报错并退出; - 从
中取出比特串 ,计算 ; - 计算
,从 中取出比特串 ,若 ,则报错并退出; - 输出明文
。
注:观察加密算法的步骤4与解密算法的步骤3,有如下等式成立
参考
GM/T 0003.4—2012
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~