🧷【非对称加解密】SM2国密加密和解密
2022-3-1
| 2023-10-28
0  |  0 分钟
type
status
date
slug
summary
tags
category
icon
password
Sub-item
Last edited time
Oct 28, 2023 10:40 AM
Parent item
领域

加密过程

加密过程可以描述为:
  1. 需要发送加密消息的发送者将待传输的明文()编码到椭圆曲线上一点,并产生一个随机整数
  1. 发送者计算2个坐标点,;其中为接收者公开的公钥,为椭圆曲线的基点;
  1. 发送者将传输给接收者;
  1. 接收者接到密文信息后,计算,结果就是点,因为。其中为接收者持有的私钥;
  1. 接收者再将坐标点M翻译为原始消息;
 
在具体实现中,加密过程实例如下:
  1. 用随机数发生器产生随机数
  1. 计算椭圆曲线点
  1. 计算椭圆曲线点,若是无穷远点,则报错并退出,其中为接收者的公钥;
  1. 计算椭圆曲线点
  1. 计算是秘钥派生函数,根据输入值生成一个长度为的秘钥,若t为全0比特串,则需要重复第一步,重新计算;
  1. 计算;$该步骤的作用是对消息进行“加密”;
  1. 计算;该步骤的作用是对消息及参数进行“签名”;
  1. 输出密文为''开头,再加64字节的为32字节的Hash值,和明文长度相同,即加密结果是原文长度加上97字节。

解密过程

设klen为密文中C2的比特长度。 根据上一小节的介绍,发送者持有接收者的公钥PB,经过非对称秘钥加密后的密文格式为,接收者可以通过以下计算流程进行解密:
  1. 从C中取出比特串,将的数据类型转换为椭圆曲线上的点,这里首先需要验证是否满足椭圆曲线方程,若不满足则说明密文有问题;
  1. 计算椭圆曲线点,若是无穷远点,则报错并退出;
  1. 计算,该值等于加密过程中的坐标,其中为接收者的私钥。根据加密过程中坐标的计算方法,, 可以推导出 ,而就是, 所以
  1. 和加密过程一样,计算,若为全0比特串,则报错并退出;
  1. 从C中取出比特串,计算;该步骤的作用是恢复原始消息;
  1. 计算,从C中取出比特串,若u不等于,则报错并退出。该步骤的作用是验证原始消息是否被篡改;
  1. 输出明文
 
密码学
  • 密码学算法
  • 非对称秘钥
  • 国密
  • 【CA证书】证书字段详细说明【非对称加解密】ECC椭圆曲线加密和解密
    目录