sm2算法加密解密流程
发布时间
阅读量:
阅读量
2021SC@SDUSC
1 .SM2 加密算法
假定待传输的信息为比特序列M,其长度记作len。为实现对明文M的加密操作,作为发送方的用户A需依次执行以下步骤。
(1)采用随机数生成装置生成一个随机数值k∈[1,n-1],其中n代表椭圆曲线基点G的阶数。
(2)计算椭圆曲线上的点 C1=[k]G=(x_1,y_1)
(3)计算椭圆曲线上的点S=[h]P_B,要求该点不能为无穷远点O。
(4)计算椭圆曲线上的点[k]P_B=(x_2,y_2)
(5)计算t=KDF(x_2‖y_2,len),其中KDF表示密钥派生函数,其输出结果是一个长度为len的比特串,并且该函数的输出不得全由0构成。若结果出现全0,则需要重新选取随机数k。
(6)执行异或运算得到C_2=M⊕t
(7)计算C_3=Hash (x_2 ||M||y_2 ),其中Hash表示密码杂凑函数。
(8)最终输出密文C=C_1 ||C_2 ||C_3
2 .SM2 解密算法
根据前述加密流程可知,密文中的_c**2部分具有_len长度。作为接收方的B在接收到密文c=c_1∥c_2∥c_3后,需依次完成以下操作:
(1)从密文中提取出对应的比特序列,并验证其是否满足椭圆曲线方程;若不满足,则判定解密失败。
(2)计算对
全部评论 (0)
还没有任何评论哟~
