type
status
date
slug
summary
tags
category
icon
password
Sub-item
Last edited time
Oct 28, 2023 10:42 AM
Parent item
领域
SM4是国密对称秘钥算法标准,相关算法实现介绍如下。
SM4加密也属于分组密码, SM4对于分组块的加密过程可以表示为:
下面介绍详细步骤。
首先定义3个在算法中将用到的基础变换函数。
- τ变换函数
τ变换是一个非线性变换过程,通过S盒完成字节替换,以字节
0xEF
为例, 它被替换为S盒中的第E行,第F列对应的值0x84
,SM4的S盒定义如下:- L变换
L变换为为轮函数中的线性变换过程,对于加密过程的轮函数,L变换为:
- 变换
然后进行秘钥扩展, 计算得到扩展的秘钥: ~ 。
秘钥扩展的第一步是计算。其中为系统参数。。
;
;
;
;
秘钥扩展的第二步是使用上面的τ变换和L^’变换来计算~ 。
计算~的迭代计算算法如下图所示:
其中为系统参数, 其取值如下:
得到扩展秘钥后,开始进行加密。如下图,计算 ~ 。
迭代加密完成后,取最后4个字: ,对齐进行逆序操作,作为加密后的密文:。