SM4算法原理_sgp4算法

SM4算法原理_sgp4算法前面的文章介绍了SM4算法的C语言实现,源码可见我的另一篇文章:https://blog.csdn.net/cg129054036/article/details/83012721;这篇文章介绍SM4算法原理,这部分可能会比较枯燥,但数学要求也不是太高。目录1.概述2.参数产生3.轮函数4.密钥扩展5.加密/解密过程1.概述2012年3月,国家密码管理…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

前面的文章介绍了SM4算法的C语言实现,源码可见文章:SM4国密对称算法源码解析_10点43的博客-CSDN博客_sm4代码

本文将会介绍SM4算法原理,这部分可能会比较枯燥,但数学要求也不是太高。


目录

1.概述

2. 参数产生

3. 轮函数

4. 密钥扩展

5. 加密/解密过程


1.概述

2012年3月,国家密码管理局正式公布了包含SM4分组密码算法在内的《祖冲之序列密码算法》等6项密码行业标准。与DES和AES算法类似,SM4算法是一种分组密码算法。其分组长度为128bit,密钥长度也为128bit。加密算法与密钥扩展算法均采用32轮非线性迭代结构,以字(32位)为单位进行加密运算,每一次迭代运算均为一轮变换函数F。SM4算法加/解密算法的结构相同,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序。SM4算法的整体结构如图所示:

SM4算法结构图:

SM4算法原理_sgp4算法


2. 参数产生

  1. 字节由8位2进制数表示,字由32位2进制数表示;
  2. S盒为固定的8bit输入和输出置换;
  3. 加密密钥长度为128bit,表示为MK=(MK0,MK1,MK2,MK3),其中MKi (i=0,1,2,3)为字。轮密钥表示为rki(i=0,1,2…..,31)为字。FK=(FK0,FK1,FK2,FK3)为系统参数,CK=(CK0,CK1,…..,CK31)为固定参数,都为字。

3. 轮函数

整体的加密函数为:

SM4算法原理_sgp4算法

其中T为一个合成置换,由非线性变换和线性变换复合而成。

  • 非线性变换由4个平行的S盒构成,S盒的数据均采用16进制。
  • 线性变换公式如下,其中B为非线性变换得到的字SM4算法原理_sgp4算法

4. 密钥扩展

已知加密密钥MK=(MK0,MK1,MK2,MK3),系统参数FK=(FK0,FK1,FK2,FK3),固定参数CK=(CK0,CK1,…..,CK31).

rki为轮密钥,轮密钥由加密密钥生成。

首先,SM4算法原理_sgp4算法

然后对i=0,1,2,…,31:

      SM4算法原理_sgp4算法

改变换与加密中的T变换基本相同,只是将其中的线性变换改为:SM4算法原理_sgp4算法,由于系统参数个固定参数是已知的,轮密钥即可求得。


5. 加密/解密过程

加密最后一轮变换时,输出为:

SM4算法原理_sgp4算法

最后输出是加密的反序,解密时只是将轮密钥的使用顺序进行逆向进行。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185557.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ManualResetEvent浅谈

    ManualResetEvent浅谈C#中ManualResetEvent的开关作用贴代码usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading;usingSystem.Threading.Tasks;namespacetest01{clas…

    2022年7月18日
    22
  • idea 2022.01激活(JetBrains全家桶)2022.01.28

    (idea 2022.01激活)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~GTRP…

    2022年3月31日
    55
  • wireshark抓包分析[通俗易懂]

    wireshark抓包分析[通俗易懂]TCP协议首部:分析第一个包:源地址:我自己电脑的IP,就不放上来了Destination:222.199.191.33目的地址TCP:表明是个TCP协议Length:66表明包的长度

    2022年7月2日
    48
  • 网页中的兼容性视图设置在哪_找不到兼容性视图设置

    网页中的兼容性视图设置在哪_找不到兼容性视图设置浏览器兼容性视图设置在浏览器右上角的设置里,设置方法如下:方法11、首先,打开电脑,找到电脑桌面上的IE浏览器,并点击打开,打开后,进入任一网页,找到页面右上方的的设置图标,如下图所示,点击。2、点击这个设置图标后,会展开下图所示的选项,请找到下方的F12开发人员工具(L),并点击进入。3、这时候,浏览器下方会出现一个设置框,找到“浏览器模式”选项,点击,然后找到下方的“兼容性视图”勾选并确认,I…

    2025年10月6日
    5
  • freeswitch之呼叫中心acd模块开发

    freeswitch之呼叫中心acd模块开发一、定义:ACD(AutomaticCallDistributor)自动呼叫分配,也叫智能选择座席。它是呼叫中心整个前台接入系统逻辑功能的描述:把接入的呼叫转接到正确的座席员桌前。ACD是现代呼叫中心有别于一般的热线电话系统和自动应答系统的重要标志,其性能的优劣直接影响到呼叫中心的效率和顾客的满意度。二、ACD包含的功能点:1、程控交换功能ACD在本质上也是交换机的一种类型,必须具有程控交换最基本的话务交换功能。2、排队功能ACD必须具有话务排队的功能,所谓排队是指在内线都

    2022年7月14日
    22
  • C语言xml文件存储数据文件(一)

    C语言xml文件存储数据文件(一)————————————————版权声明:本文为CSDN博主「jack8126」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/jack8126/article/details/117004179本文,摘抄的,未验证过,纯属保存留用,请看原作者。c语言读取xml配置文件c语言要实现读取xml配置文件的功能。需要先编译libxml2库。1、编译libxml2库libxml2库从网络下载得到,这里下载的文件是:

    2022年7月12日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号