SM4算法原理

2023-10-26

前面的文章介绍了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算法结构图:


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. 轮函数

整体的加密函数为:

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

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

4. 密钥扩展

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

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

首先,

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

      

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


5. 加密/解密过程

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SM4算法原理 的相关文章

  • 密码编码学与网络安全(2):对称密码之传统加密技术

    对称密码之传统加密技术 关于对称加密 对称密码模型 密码编码学 密码分析学与穷举攻击 古典加密算法 代替技术 置换技术 转轮机 隐写术 关于对称加密 对称加密 也称为传统加密或单密钥加密 是20世纪70年代公钥密码产生之前唯一的 加密类型
  • 格密码学习,抽代基础学习(二)

    今天找到了一个比较新手友好的slides 结合lec1和学姐的笔记一起看 full rank lattice 满格 R n mathbb R n Rn的概念 n维度实数集 每个元素是n维向量 向量中的每个分量是实数 Z
  • 【BingGPT对话记录】基于格的密码学简介

    格密码学是一种基于格 lattice 的数学结构的密码学分支 它具有抵抗量子计算攻击的特性 格是一个由线性无关向量生成的离散点集 可以用来描述许多复杂的几何和代数问题 格密码学的安全性通常建立在最坏情况下的难度假设上 即即使给定最优化算法
  • 密码学与网络安全笔记整理-数据完整性技术

    1 数据完整性 类似于通信中的校验码功能 在密码学领域数据完整性用于验证收到信息的正确性 校验收到的信息是否经过篡改 校验收到的信息是真实的发送者发送而非伪造 发送者通过编码为消息增加一些 冗余 生成一个校验值 并将该校验值附在消息之后 接
  • 密码学原语如何应用?解析密码学特有的数据编解码|第10论

    隐私保护方案的工程实现 如何关联到学术论文中天书一般的公式符号 密码学工程中 有哪些特有的数据编解码方式 存在哪些认知误区和注意事项 需要克服哪些限制和挑战 作为支撑隐私保护方案的核心技术 如何运用数据编解码 将密码学论文中抽象的数学符号和
  • 今天我抓了个 HTTPS 的包

    之前写过一篇讲 HTTPS 的思想的文章 破玩意 用 HTTPS 传纸条 后来又写了篇用更凝练的语言总体描述了 HTTPS 的主干 叮咚 HTTPS 的分支和主干 想必通过这两篇文章 HTTPS 为什么要这么设计 以及它是用来解决什么问题的
  • DES 数据加密标准 结构详解

    DES Data Encryption Standard 又称数据加密标准 是一种对称加密算法 也是密码学摆脱古典流加密后最简单的一种块加密算法 由于香农与1949年提出 完善保密性 该标准要求密钥长度不短于明文长度 实际操作难以达到 因此
  • 区块链密码学学习笔记

    一 哈希算法 哈希函数是将任意长度的二进制明文通过算法处理映射为较短且固定长度的 二进制值 映射后的值也被称为哈希值 哈希值的数据唯一 且形式紧凑 即使只是变更明文中的一个字母 最终得到的哈希值也会发生变更 由于哈希算法本身的特点 任何人都
  • 攻防世界-Morse

    1 下载文件打开得到如下01代码 很明显可以看出是摩斯编码 2 使用摩斯编码解码 得到如下结果 3 根据题目提示我们可以得到flag为cyberpeace morsecodeissointeresting
  • 网络安全与密码学

    1 网络安全威胁 破坏网络安全的一些理论方式 窃听 窃听信息 在网路通信双方直接进行窃听 插入 主动在网络连接中插入信息 可以在message中插入恶意信息 假冒 伪造 spoof 分组中的源地址 假冒客户端或服务器 劫持 通过移除 取代发
  • 11 种加密 & 哈希算法的原理及其 Java 实现

    11 种加密 哈希算法的原理及其 Java 实现 一 目的 二 运行环境 三 基本原理及步骤 I 各种加密算法的原理 DES 数据加密标准 Data Encryption Standard 算法介绍 算法流程 优点 缺点 破解方式 适用场景
  • BUUCTF Crypto(密码学)刷题

    MD5 拿到一串字符串e00cf25ad42683b3df678c61f42c6bda 根据题目可到在线MD5在线解密 拿到flag Url编码 根据提示可知是url编码 url编码在线解密 一眼就解密 的确 一眼就解密了 非常明显的bes
  • 人民日报:密码,让百姓生活更安全

    密码技术是保障网络与信息安全的核心技术和基础支撑 通过加密保护和安全认证两大核心功能 可以完整实现防假冒 防泄密 防篡改 抗抵赖等安全需求 在网络空间中扮演着 信使 卫士 和 基因 的重要角色 信息化 网络化 数字化高度发达的今天 密码技术
  • 密码学-hash加密

    以下代码分别为乘法hash sha256 md5 ripemd160的使用方法 package main import fmt crypto sha256 os io crypto md5 encoding hex golang org x
  • 理解密码学中的双线性映射

    回顾 什么是群 一 定义 定义1 设G是定义了一个二元运算 的集合 如果这个运算满足下列性质 1 封闭性 如果a和b都属于G 则a b也属于G 2 结合律 对于G中的任意元素a b和c 都有 a b c a b c 成立 3 单位元 G中存
  • 非对称加密-RSA

    一 非对称加密 1 对称加密 对称密码的核心是一把密钥 使用相同的密钥进行加密和解密 如移位密码 S DES 但密匙本身也是信息 对称密码中它的安全得不到保障 2 非对称加密 非对称密码的核心是公钥和私钥 公钥是用于加密数据的密钥 而私钥则
  • Shamir门限方案的秘钥分享(包括逆元求解)

    Shamir门限方案的秘钥分享 不要求支持大数 题目描述 实验目的 通过基于Shamir门限方案的密钥分割及恢复的演示 理解密钥分割的重要性 理解密钥分割的基本原理和作用 掌握基于Shamir门限方案的密钥分割软件的使用 实验原理 秘密共享
  • 现代密码学-密码学概论与基本知识

    目录 简介 密码学发展简史 创建 发展阶段 古典密码时期 近代密码时期 现代密码时期 密码主要功能 机密性 完整性 认证性 不可否认性 密码系统的组成 密码分析学 定义 密码攻击类型 针对对称密码体制 针对对称密码体制 常用方法 密码体制的
  • 彩虹表(rainbow table)

    1 彩虹表引入 在看微众银行开源的WeIdentity规范中的可验证凭证Credential数据结构时 看到有关于防止彩虹表方式反向破解哈希的问题 如下图所示 在执行选择性披露用户的信息时 是将claim中的其他字段内容进行hash 只披露
  • 【区块链与密码学】第6-7讲:SM9数字签名算法

    本课堂内容全部选编自PlatON首席密码学家 武汉大学国家网络安全学院教授 博士生导师何德彪教授的 区块链与密码学 授课讲义 教材及互联网 版权归属其原作者所有 如有侵权请立即与我们联系 我们将及时处理 6 7 SM9数字签名算法 为了降低

随机推荐

  • parted3 Linux分区命令

    原贴地址 http www junfcom cn post 184 html Parted是一个着名的命令行工具 可以轻松管理硬盘分区 它可以帮助您添加 删除 缩小和扩展磁盘分区及其上的文件系统 从第一次出来 分手已经走了很长的路 其中一些
  • 谈谈管理者绩效管理要点

    作者 李石 链接 https www zhihu com question 19626322 answer 29165823 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 在绩效管理中衡量一个管理者的绩效与
  • 2023-05-22 题目

    1 java的泛型 泛型是jdk 5 引入的 泛型就是 引用类型作为参数 本质就是参数化类型 1 类型擦除 java的泛型基本上都是在编译器这个层次来实现的 在生成的字节码文件中是不包含泛型类中的信息的 泛型参数在编译的时候被去掉的过程叫做
  • 关于安卓系统安全性的问题

    引言 很久以前有人声称使用安卓系统不安全 称其获取的用户权限过多 太过于暴露用户的隐私 很多人在贴下反讽 只是你不会使用权限管理而已 而实际上现在 很多安卓应用程序一旦禁用了某些权限就直接限制用户的使用 完全就是一种流氓姿态 限制权限已经不
  • 前端学习路线(2023)

    这个前端学习路线看起来很详细和全面 涵盖了从基础知识到高级框架 从单机开发到全栈项目 从混合应用到原生应用 从性能优化到架构设计的各个方面 如果你能够按照这个路线学习和实践 我相信你一定能够成为一名优秀的前端工程师 不过 我也要提醒你 这个
  • ModuleNotFoundError: No module named 'encodings'

    问题描述 Fatal Python error Py Initialize unable to load the file system codec ModuleNotFoundError No module named encodings
  • 三极管和MOS管的使用及区别

    1 三极管 单片机IO口输出高电平时 三极管导通 单片机IO口输出低电平时 三极管截止 1 三极管是电流控制型元件 三极管的BE之间可以理解为存在一个二极管的通路 当给B加高电平时 BE之间就会产生持续的电流 维持三极管打开的条件就是BE之
  • 101.对称二叉树

    给定一个二叉树 检查它是否是镜像对称的 例如 二叉树 1 2 2 3 4 4 3 是对称的 1 2 2 3 4 4 3 但是下面这个 1 2 2 null 3 null 3 则不是镜像对称的 1 2 2 3 3 方法1 根左右遍历一次树得到
  • 微信小程序个人简历界面(编辑版)

    微信小程序个人简历界面 可编辑修改 包含全部源码 1 微信小程序实现简单的个人简历界面 包含基本信息 教育背景 获奖证书 兴趣爱好等 简历信息支持修改编辑内容 2 通过此文章 希望能带给更多学习微信小程序的伙伴们一点点经验 示例简洁 布局简
  • Linux系统编程之pthread多线程与互斥编程

    Linux系统编程之pthread多线程与互斥编程 include
  • tcp三次握手、四次挥手

    原文 https www cnblogs com qq78292959 p 3922231 html https blog csdn net qq 38950316 article details 81087809 经典的四次握手关闭图 T
  • 几款常用压测工具介绍与使用

    现在市面上的压测工具数不胜数 挑几款常用的做个简单的介绍 1 Apache ab ab是apache自带的压力测试工具 使用起来非常方便 安装 1 ab运行需要依赖apr util包 安装命令为 yum install apr util 2
  • 腾讯云短信Java调用示例(SDK3.0)

    腾讯云短信Java调用示例 SDK3 0 1 pom xml 添加以下依赖 2 需要引入的包 3 程序实例 1 pom xml 添加以下依赖
  • IDEA控制台乱码问题 maven-javadoc-plugin

    接手老项目 上来就是编译报错 一看是控制台还打印一堆乱码 所以上来百度搜到一篇不错的文章DEA控制台乱码问题 原因 解决方式 解决不了算我输 一顿操作仍然无效 不过学会了不少 后来控制台报错中发现了 maven javadoc plugin
  • SpringAOP的5种增强类型应用讲解

    SpringAOP的5种增强类型应用讲解 一 前言 spring框架中为我们提供的增强包括针对切面的增强和针对切入点的增强 对一个方法的增强底层使用的是动态代理 所以在学习springAop增强之前大家有必要先了解一下动态代理相关内容 本文
  • linux系统配置文件

    1 etc sysconfig i18n 语言配置文件 2 etc sysconfig network scripts ifcfg eth0 eth0配置文件 3 boot grub grub conf grup配置文件 或 boot gr
  • 记一次线上BUG排查过程

    1 线上遇到一个非常奇怪的bug 为一个用户分配业务线类型后 该用户登录时 提示502 但其它的用户登录完全是正常的 2 问题现象 3 排查思路 先去看线上日志 看是否有error 但日志里边这个接口200正常返回 本地debug 也复现一
  • 快速入门ASP.NET Core

    本来这篇只是想简单介绍下ASP NET Core MVC项目的 毕竟要照顾到很多新手朋友 但是转念一想不如来点猛的 考虑到急性子的朋友 让你通过本文的学习就能快速的入门ASP NET Core 既然是快速入门所以过多过深的内容我这里就一笔带
  • mybatis调用oracle视图

    多数据源切换调用oralce里的某个视图 后台报错 表或视图不存在 select from table 最后在select 语句中加上前缀即可 select from zzzz table
  • SM4算法原理

    前面的文章介绍了SM4算法的C语言实现 源码可见文章 SM4国密对称算法源码解析 10点43的博客 CSDN博客 sm4代码 本文将会介绍SM4算法原理 这部分可能会比较枯燥 但数学要求也不是太高 目录 1 概述 2 参数产生 3 轮函数