目录

  • 分组密码
    • 分组密码概述
    • Feistel 密码结构
    • 数据加密标准(DES)
    • 差分密码分析与线性密码分析
    • 分组密码的运行模式
    • 国际数据加密算法(IDEA)
    • 高级加密标准(AES,Rijndael)
    • 中国商用密码 SM4
    • 祖冲之密码(ZUC)

分组密码

分组密码概述

  1. 基本定义
    分组密码是将明文消息编码后的数字序列划分为长度为nnn的组(nnn维矢量),在密钥控制下变换为等长的输出数字序列(mmm维矢量),加密函数为E:Vn×K→VmE: V_n \times K \to V_mE:Vn×KVm,其中VnV_nVnVmV_mVmnnn维、mmm维矢量空间,KKK为密钥空间。
  2. 核心概念
    • 代换:明文分组到密文分组的可逆变换。对于nnn比特分组,有2n2^n2n个可能取值,可逆变换的总数为(2n)!(2^n)!(2n)!(所有可能置换)。例如n=4n=4n=4时,4 比特输入(16 种状态)通过代换表映射为 4 比特输出,加密与解密可通过代换表定义。
    • 扩散与混淆(Shannon 提出,抗统计分析的核心):
      • 扩散:将明文的统计特性(如字母频率)散布到密文,使密文统计特性更均匀(例如通过多轮置换 + 函数变换实现)。
      • 混淆:使密文与密钥的统计关系复杂化,避免敌手通过密文统计特性推导密钥(通过复杂非线性代换实现)。

Feistel 密码结构

  1. 基本原理
    • 采用 “乘积密码” 思想,将分组分为左右两半(L0,R0L_0, R_0L0,R0),经多轮迭代变换:
      • iii轮:Li=Ri−1L_i = R_{i-1}Li=Ri1Ri=Li−1⊕F(Ri−1,Ki)R_i = L_{i-1} \oplus F(R_{i-1}, K_i)Ri=Li1F(Ri1,Ki),其中FFF为轮函数,KiK_iKi为子密钥。
      • 解密:与加密算法相同,但子密钥使用顺序相反(第 1 轮用KnK_nKn,最后一轮用K1K_1K1)。
  2. 关键参数
    • 分组大小:越大安全性越高,但速度越慢;
    • 密钥大小:越长安全性越高,但速度越慢;
    • 轮数:多轮可提升安全性(单轮不足以抗攻击);
    • 子密钥产生算法:复杂度越高,密码分析越难;
    • 轮函数:复杂度越高,安全性越强。

数据加密标准(DES)

  1. 基本参数
    • 分组长度:64 比特;密钥长度:56 比特(含 8 位奇偶校验位);轮数:16 轮。
    • 结构:Feistel 网络,包含初始置换、16 轮迭代、逆初始置换。
  2. 加密流程
    • 初始置换(IP):重排 64 比特明文,输出 32 比特左半(L0L_0L0)和 32 比特右半(R0R_0R0)。
    • 轮变换
      1. 扩展置换(E):将 32 比特Ri−1R_{i-1}Ri1扩展为 48 比特(重复 16 个比特);
      2. 与 48 位子密钥KiK_iKi异或;
      3. S 盒代换:8 个 S 盒(每个 6 输入 4 输出),将 48 比特压缩为 32 比特;
      4. 置换(P):重排 32 比特输出,作为轮函数FFF的结果;
      5. 迭代:Li=Ri−1L_i = R_{i-1}Li=Ri1Ri=Li−1⊕F(Ri−1,Ki)R_i = L_{i-1} \oplus F(R_{i-1}, K_i)Ri=Li1F(Ri1,Ki)
    • 逆初始置换(IP⁻¹):16 轮后交换左右两半,经 IP⁻¹ 输出 64 比特密文。
  3. 密钥产生
    • 56 比特密钥经置换选择 1(PC1)分为 28 比特C0C_0C0和 28 比特D0D_0D0
    • 每轮左移(1 或 2 位,依轮数而定),经置换选择 2(PC2)产生 48 位子密钥KiK_iKi
  4. 变种
    • 二重 DES:用两个 56 比特密钥(总 112 比特),易受 “中途相遇攻击”(需2562^{56}256存储和计算);
    • 三重 DES
      • 两个密钥(EDE 模式):C=EK1(DK2(EK1(P)))C = E_{K1}(D_{K2}(E_{K1}(P)))C=EK1(DK2(EK1(P))),密钥长 112 比特;
      • 三个密钥:C=EK3(DK2(EK1(P)))C = E_{K3}(D_{K2}(E_{K1}(P)))C=EK3(DK2(EK1(P))),密钥长 168 比特,安全性更高。

差分密码分析与线性密码分析

  1. 差分密码分析
    • 原理:通过分析明文对的差值(ΔX=X1⊕X2\Delta X = X_1 \oplus X_2ΔX=X1X2)对密文对差值(ΔY=Y1⊕Y2\Delta Y = Y_1 \oplus Y_2ΔY=Y1Y2)的影响,恢复密钥。
    • 核心概念:
      • rrr轮特征:差分序列(α0,α1,...,αr)(\alpha_0, \alpha_1, ..., \alpha_r)(α0,α1,...,αr),其中α0\alpha_0α0为明文差分,αi\alpha_iαi为第iii轮输出差分;
      • 概率:rrr轮特征的概率为各轮函数差分概率的乘积。
  2. 线性密码分析
    • 原理:利用 “不平衡线性逼近”,寻找明文(PPP)、密文(CCC)、密钥(KKK)的线性方程P[i1,...,ia]⊕C[j1,...,jb]=K[k1,...,kc]P[i_1,...,i_a] \oplus C[j_1,...,j_b] = K[k_1,...,k_c]P[i1,...,ia]C[j1,...,jb]=K[k1,...,kc],通过已知明文对的统计偏差(概率≠1/2)确定密钥。
  3. 改进方法
    • 包括高阶差分分析、不可能差分分析、多重线性分析、能量分析(针对硬件)等。

分组密码的运行模式

  1. 电码本模式(ECB)
    • 特点:每个 64 比特明文分组独立用同一密钥加密,密文与明文一一对应(类似 “电码本”)。
    • 优缺点:简单快速,但重复明文产生重复密文,易暴露统计特性,适合短数据(如密钥传输)。
  2. 密码分组链接模式(CBC)
    • 特点:当前明文分组与前一密文分组异或后加密,即Ci=EK(Pi⊕Ci−1)C_i = E_K(P_i \oplus C_{i-1})Ci=EK(PiCi1),首组需初始向量(IV):C0=EK(P0⊕IV)C_0 = E_K(P_0 \oplus IV)C0=EK(P0IV)
    • 优缺点:隐藏重复明文,安全性高于 ECB;IV 需保密(防止首组被篡改)。
  3. 密码反馈模式(CFB)
    • 特点:将分组密码转为流密码,64 比特移位寄存器初始为 IV,加密输出的前jjj比特与明文单元异或得密文,密文单元移入移位寄存器。
    • 优缺点:实时加密(无需填充),密文与明文等长;错误会传播(影响后续解密)。
  4. 输出反馈模式(OFB)
    • 特点:移位寄存器反馈加密算法的输出(而非密文),即Si=EK(Si−1)S_i = E_K(S_{i-1})Si=EK(Si1),密文Ci=Pi⊕SiC_i = P_i \oplus S_iCi=PiSi
    • 优缺点:错误不传播(仅影响当前单元),但易受篡改(密文比特翻转会导致明文对应比特翻转)。

国际数据加密算法(IDEA)

  1. 基本参数
    • 分组长度:64 比特;密钥长度:128 比特;轮数:8 轮迭代 + 1 轮输出变换。
  2. 核心运算
    • 三种非线性运算(确保混淆与扩散):
      • 逐比特异或(⊕\oplus);
      • 2162^{16}216加法(+++);
      • 216+12^{16}+1216+1乘法(⊙\odot,0 视为2162^{16}216)。
  3. 加密流程
    • 明文分为 4 个 16 比特子段(X1,X2,X3,X4)(X_1, X_2, X_3, X_4)(X1,X2,X3,X4)
    • 每轮用 6 个子密钥,通过 “乘加(MA)结构” 处理,输出 4 个子段;
    • 输出变换:用 4 个子密钥,调整子段顺序以抵消最后一轮的交换。
  4. 解密
    • 子密钥为加密子密钥的逆元(模216+12^{16}+1216+1乘法逆元、模2162^{16}216加法逆元),轮密钥顺序相反。

高级加密标准(AES,Rijndael)

  1. 基本参数
    • 分组长度(NbN_bNb):128/192/256 比特(对应列数 4/6/8);
    • 密钥长度(NkN_kNk):128/192/256 比特(对应列数 4/6/8);
    • 轮数(NrN_rNr):10/12/14 轮(依分组和密钥长度而定)。
  2. 数学基础
    • 基于有限域GF(28)GF(2^8)GF(28),元素表示为 8 次多项式(系数为 0/1),加法为异或,乘法模不可约多项式m(x)=x8+x4+x3+x+1m(x) = x^8 + x^4 + x^3 + x + 1m(x)=x8+x4+x3+x+1(十六进制 “11B”)。
  3. 轮函数
    • 字节代换(SubBytes):通过 S 盒(非线性变换,先求GF(28)GF(2^8)GF(28)逆元,再仿射变换)替换每个字节;
    • 行移位(ShiftRow):第 0 行不动,第 1 行左移 1 位,第 2 行左移 2 位,第 3 行左移 3 位(依NbN_bNb调整);
    • 列混合(MixColumn):每列视为GF(28)GF(2^8)GF(28)上多项式,与固定多项式c(x)=03x3+01x2+01x+02c(x) = 03x^3 + 01x^2 + 01x + 02c(x)=03x3+01x2+01x+02x4+1x^4+1x4+1相乘;
    • 密钥加(AddRoundKey):状态与轮密钥逐比特异或。
    • 最后一轮无 “列混合”。
  4. 密钥扩展
    • 种子密钥扩展为Nb×(Nr+1)N_b \times (N_r + 1)Nb×(Nr+1)个字(4 字节),通过循环移位、S 盒代换、轮常量异或生成子密钥。
  5. 解密
    • 用逆变换(逆字节代换、逆行移位、逆列混合),轮密钥为加密轮密钥的逆序(最后一轮密钥不变,其余经逆列混合处理)。

中国商用密码 SM4

  1. 基本参数
    • 分组长度:128 比特;密钥长度:128 比特;轮数:32 轮。
  2. 核心部件
    • S 盒:8 输入 8 输出非线性替换,基于固定表;
    • 非线性变换(τ\tauτ:4 个 S 盒并行处理 4 字节;
    • 线性变换(LLLL(B)=B⊕(B≪2)⊕(B≪10)⊕(B≪18)⊕(B≪24)L(B) = B \oplus (B \ll 2) \oplus (B \ll 10) \oplus (B \ll 18) \oplus (B \ll 24)L(B)=B(B2)(B10)(B18)(B24),实现扩散;
    • 合成变换(TTTT(X)=L(τ(X))T(X) = L(\tau(X))T(X)=L(τ(X)),结合混淆与扩散。
  3. 加密流程
    • 明文分为 4 个 32 比特子段(X0,X1,X2,X3)(X_0, X_1, X_2, X_3)(X0,X1,X2,X3)
    • 32 轮迭代:Xi+4=Xi⊕T(Xi+1⊕Xi+2⊕Xi+3⊕rki)X_{i+4} = X_i \oplus T(X_{i+1} \oplus X_{i+2} \oplus X_{i+3} \oplus rk_i)Xi+4=XiT(Xi+1Xi+2Xi+3rki)rkirk_irki为轮密钥;
    • 反序处理:(Y0,Y1,Y2,Y3)=(X35,X34,X33,X32)(Y_0, Y_1, Y_2, Y_3) = (X_{35}, X_{34}, X_{33}, X_{32})(Y0,Y1,Y2,Y3)=(X35,X34,X33,X32)
  4. 密钥扩展
    • 由 128 比特密钥生成 32 个轮密钥,使用固定常数FKFKFK和参数CKCKCK,通过T′T'T变换(线性变换L′L'L替代LLL)生成。

祖冲之密码(ZUC)

  1. 结构
    • 三层逻辑:16 级线性反馈移位寄存器(LFSR)、比特重组(BR)、非线性函数(F)。
    • LFSR:16 个 31 比特寄存器,特征多项式为GF(231−1)GF(2^{31}-1)GF(2311)上的本原多项式,支持初始化(引入非线性函数输出)和工作模式。
    • 比特重组:从 LFSR 抽取 128 比特,组成 4 个 32 比特字(X0,X1,X2,X3)(X_0, X_1, X_2, X_3)(X0,X1,X2,X3)
    • 非线性函数:压缩 96 比特(X0,X1,X2X_0, X_1, X_2X0,X1,X2)为 32 比特,含 S 盒(4 个 8×8 S 盒并行)和线性变换。
  2. 应用
    • 用于 4G 移动通信加密(128-EEA3 算法),基于初始密钥和向量生成密钥流,与消息异或实现加解密。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/93419.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/93419.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/93419.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单片机(STM32-WIFI模块)

一、WIFI模块介绍 1. ESP12-F模组介绍 1.1 简介 ESP12-F模组(安信可(Ai-Thinker)ESP8266系列模组)是一款基于乐鑫(Espressif)公司ESP8266芯片的Wi-Fi无线通信模块,广泛应用于物联网&#xff0…

PyTorch 数据类型和使用

关于PyTorch的数据类型和使用的学习笔记 系统介绍了PyTorch的核心数据类型Tensor及其应用。Tensor作为多维矩阵数据容器,支持0-4维数据结构(标量到批量图像),并提供了多种数值类型(float32/int64等)。通过…

[python刷题模板] LogTrick

[python刷题模板] LogTrick 一、 算法&数据结构1. 描述2. 复杂度分析3. 常见应用4. 常用优化二、 模板代码1. 特定或值的最短子数组2. 找特定值3. 找位置j的最后一次被谁更新4. 问某个或和的数量三、其他四、更多例题五、参考链接一、 算法&数据结构 1. 描述 LogTric…

Vim与VS Code

Vim is a clone, with additions, of Bill Joys vi text editor program for Unix. It was written by Bram Moolenaar based on source for a port of the Stevie editor to the Amiga and first released publicly in 1991.其实这个本身不是 IDE (只有在加入和配置…

[2025CVPR-图象分类方向]CATANet:用于轻量级图像超分辨率的高效内容感知标记聚合

​1. 研究背景与动机​ ​问题​:Transformer在图像超分辨率(SR)中计算复杂度随空间分辨率呈二次增长,现有方法(如局部窗口、轴向条纹)因内容无关性无法有效捕获长距离依赖。​现有局限​: SPI…

课题学习笔记3——SBERT

1 引言在构建基于知识库的问答系统时,"语义匹配" 是核心难题 —— 如何让系统准确识别 "表述不同但含义相同" 的问题?比如用户问 "对亲人的期待是不是欲?",系统能匹配到知识库中 "追名逐利是欲…

在Word和WPS文字中把全角数字全部改为半角

大部分情况下我们在Word或WPS文字中使用的数字或标点符号都是半角,但是有时不小心按错了快捷键或者点到了输入法的全角半角切换图标,就输入了全角符号和数字。不用担心,使用它们自带的全角、半角转换功能即可快速全部转换回来。一、为什么会输…

数据结构的基本知识

一、集合框架1、什么是集合框架Java集合框架(Java Collection Framework),又被称为容器(container),是定义在java.util包下的一组接口(interfaces)和其实现类(classes).主要表现为把多个元素(element)放在一个单元中,用于对这些元素进行快速、便捷的存储(store&…

WebStack-Hugo | 一个静态响应式导航主题

WebStack-Hugo | 一个静态响应式导航主题 #10 shenweiyan announced in 1.3-折腾 WebStack-Hugo | 一个静态响应式导航主题#10 ​编辑shenweiyan on Oct 23, 2023 6 comments 7 replies Return to top shenweiyan on Oct 23, 2023 Maintainer Via:我给自己…

01 基于sklearn的机械学习-机械学习的分类、sklearn的安装、sklearn数据集、数据集的划分、特征工程中特征提取与无量纲化

文章目录机械学习机械学习分类1. 监督学习2. 半监督学习3. 无监督学习4. 强化学习机械学习的项目开发步骤scikit-learn1 scikit-learn安装2 sklearn数据集1. sklearn 玩具数据集鸢尾花数据集糖尿病数据集葡萄酒数据集2. sklearn现实世界数据集20 新闻组数据集3. 数据集的划分特…

携全双工语音通话大模型亮相WAIC,Soul重塑人机互动新范式

近日,WAIC 2025在上海隆重开幕。作为全球人工智能领域的顶级盛会,本届WAIC展览聚焦底层能力的演进与具体垂类场景的融合落地。坚持“模应一体”方向、立足“AI社交”的具体场景,Soul App此次携最新升级的自研端到端全双工语音通话大模型亮相&…

第2章 cmd命令基础:常用基础命令(1)

Hi~ 我是李小咖,主要从事网络安全技术开发和研究。 本文取自《李小咖网安技术库》,欢迎一起交流学习🫡:https://imbyter.com 本节介绍的命令有目录操作(cd)、清屏操作(cls)、设置颜色…

Java 10 新特性解析

Java 10 新特性解析 文章目录Java 10 新特性解析1. 引言2. 本地变量类型推断(JEP 286)2.1. 概述2.2. 使用场景2.3. 限制2.4. 与之前版本的对比2.5. 风格指南2.6. 示例代码2.7. 优点与注意事项3. 应用程序类数据共享(JEP 310)3.1. …

【WRF工具】服务器中安装编译GrADS

目录 安装编译 GrADS 所需的依赖库 conda下载库包 安装编译 GrADS 编译前检查依赖可用性 安装编译 GrADS 参考 安装编译 GrADS 所需的依赖库 以统一方式在 $HOME/WRFDA_LIBS/grads_deps 下安装所有依赖: # 选择一个目录用于安装所有依赖库 export DIR=$HOME/WRFDA_LIBS库包1…

数据结构之队列(C语言)

1.队列的定义: 队列(Queue)是一种基础且重要的线性数据结构,遵循先进先出(FIFO)​​ 原则,即最早入队的元素最先出队,与栈不同的是出队列的顺序是固定的。队列具有以下特点&#xff…

C#开发基础之深入理解“集合遍历时不可修改”的异常背后的设计

前言 欢迎关注【dotnet研习社】&#xff0c;今天我们聊聊一个基础问题“集合已修改&#xff1a;可能无法执行枚举操作”背后的设计。 在日常 C# 开发中&#xff0c;我们常常会操作集合&#xff08;如 List<T>、Dictionary<K,V> 等&#xff09;。一个新手开发者极…

【工具】图床完全指南:从选择到搭建的全方位解决方案

前言 在数字化内容创作的时代&#xff0c;图片已经成为博客、文档、社交媒体等平台不可或缺的元素。然而&#xff0c;如何高效、稳定地存储和分发图片资源&#xff0c;一直是内容创作者面临的重要问题。图床&#xff08;Image Hosting&#xff09;作为专门的图片存储和分发服务…

深度学习篇---PaddleDetection模型选择

PaddleDetection 是百度飞桨推出的目标检测开发套件&#xff0c;提供了丰富的模型库和工具链&#xff0c;覆盖从轻量级移动端到高性能服务器的全场景需求。以下是核心模型分类、适用场景及大小选择建议&#xff08;通俗易懂版&#xff09;&#xff1a;一、主流模型分类及适用场…

cmseasy靶机密码爆破通关教程

靶场安装1.首先我们需要下载一个cms靶场CmsEasy_7.6.3.2_UTF-8_20200422,下载后解压在phpstudy_pro的网站根目录下。2.然后我们去访问一下安装好的网站&#xff0c;然后注册和链接数据库3.不知道自己数据库密码的可以去小皮面板里面查看4.安装好后就可以了来到后台就可以了。练…

【C语言】指针深度剖析(一)

文章目录一、内存和地址1.1 内存的基本概念1.2 编址的原理二、指针变量和地址2.1 取地址操作符&#xff08;&&#xff09;2.2 指针变量和解引用操作符&#xff08;*&#xff09;2.2.1 指针变量2.2.2 指针类型的解读2.2.3 解引用操作符2.3 指针变量的大小三、指针变量类型的…