SM4算法原理

SM4算法原理

SM4算法是我国的第一个商用密码算法。它是一种对称加密算法。SM4加解密流程如下图所示:

其中,RKi为第i轮加密的轮密钥。

SM4算法原理_第1张图片

SM4解密流程与解密流程一致,区别仅在于,解密需要逆序使用轮密钥。

轮函数原理如下图所示:

SM4算法原理_第2张图片

S盒的使用方法略

根据私钥使用密钥扩展算法生成轮密钥:

SM4算法原理_第3张图片

其中系统参数FK和固定参数CK的取值需参见参数表

SM4算法原理_第4张图片

*值得注意的是:*

由于SM4算法一次只加密128bit数据,即16字节数据,所以当明文数据不足16byte或者非16byte倍数时,需要使用填充算法将明文填充至16的倍数。

常采用的填充算法有PKCS7和PKCS5,这里介绍一下PKCS7:简单的说就是,以16byte划分数据,对于尾部不满16byte的数据,用【16-尾部数据长度】字符进行填充。如果正好为16的倍数,则需要填充16位0x10。

如果明文使用了填充算法生成密文,则密文解密后,需要对其进行去填充才能得到明文。具体去填充的方法为:取解密后的最后一个字符,将其转化为数值类型,即为需要剔除的长度。然后用substr截取一下,剔除即可。

你可能感兴趣的:(SM4算法,算法,安全,密码学)