IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【密码学】分组密码算法的工作模式(9)——分组链接工作模式 -> 正文阅读

[数据结构与算法]【密码学】分组密码算法的工作模式(9)——分组链接工作模式

12 分组链接工作模式

12.1 变量定义

BC工作模式采用以下变量。
a)输入变量:
??????1) q q q个明文分组 P 1 , P 2 , . . . , P q P_1,P_2,...,P_q P1?,P2?,...,Pq?所组成的序列,每个分组都为 n n n比特;
??????2)密钥 K K K,需要加解密操作方约定一致,长度由分组密码算法 E E E决定;
??????3)初始向量 I V IV IV,需要加解密操作方约定一致,长度为 n n n比特。
b)中间变量:
?????? q q q个反馈变量 F 1 , F 2 , . . . , F q F_1,F_2,...,F_q F1?,F2?,...,Fq?所组成的序列,每个变量都为 n n n比特。
c)输出变量:
?????? q q q个密文分组 C 1 , C 2 , . . . , C q C_1,C_2,...,C_q C1?,C2?,...,Cq?所组成的序列,每个分组都为 n n n比特。

12.2 BC的加密方式描述

设置反馈变量初始向量: F 1 = I V F_1=IV F1?=IV
加密运算按照如下两个步骤进行:
a)生成密文分组: C i = E k ( P i ⊕ F i ) C_i=E_k(P_i \oplus F_i) Ci?=Ek?(Pi?Fi?)
b)生成反馈变量: F i + 1 = F i ⊕ C i F_{i+1}=F_i \oplus C_i Fi+1?=Fi?Ci?
i = 1 , 2 , . . . , q i=1,2,...,q i=1,2,...,q,重复上述步骤,最后一个循环结束于a)。此过程如下图所示。初始向量 I V IV IV用于生成第一个密文输出。之后的加密过程中,每个密文与当时反馈变量进行异或运算,生成下一个反馈变量。
在这里插入图片描述

12.3 BC的加密方式示例

本示例使用的分组密码是GB/T 32907——2016中规定的SM4算法。所有变量采用“左高右低”的方式标记,即变量最左侧为其最高位。
密钥密钥为(十六进制):2B7E1516 28AED2A6 ABF71588 09CF4F3C。
初始向量为(十六进制):00010203 04050607 08090A0B 0C0D0E0F。
明文是(十六进制):6BC1BEE2 2E409F96 E93D7E11 7393172A
????????????????????????????????????AE2D8A57 1E03AC9C 9EB76FAC 45AF8E51
????????????????????????????????????30C81C46 A35CE411 E5FBC119 1A0A52EF
????????????????????????????????????F69F2445 DF4F9B17 AD2B417B E66C3710。


i = 1 i=1 i=1时:
F 1 = I V = F_1=IV= F1?=IV= 00010203 04050607 08090A0B 0C0D0E0F
P 1 ⊕ F 1 = P_1 \oplus F_1= P1?F1?= (6BC1BEE2 2E409F96 E93D7E11 7393172A) ⊕ \oplus (00010203 04050607 08090A0B 0C0D0E0F) = = = 6BC0BCE1 2A459991 E134741A 7F9E1925
a) C 1 = E k ( P 1 ⊕ F 1 ) = C_1=E_k(P_1 \oplus F_1)= C1?=Ek?(P1?F1?)= AC529AF9 89A62FCE 9CDDC5FF B84125CA
b) F 2 = F 1 ⊕ C 1 = F_2=F_1 \oplus C_1= F2?=F1?C1?= (00010203 04050607 08090A0B 0C0D0E0F) ⊕ \oplus (AC529AF9 89A62FCE 9CDDC5FF B84125CA) = AC5398FA 8DA329C9 94D4CFF4 B44C2BC5


i = 2 i=2 i=2时:
P 2 ⊕ F 2 = P_2 \oplus F_2= P2?F2?= (AE2D8A57 1E03AC9C 9EB76FAC 45AF8E51) ⊕ \oplus (AC5398FA 8DA329C9 94D4CFF4 B44C2BC5) = = = 027E12AD 93A08555 0A63A058 F1E3A594
a) C 2 = E k ( P 2 ⊕ F 2 ) = C_2=E_k(P_2 \oplus F_2)= C2?=Ek?(P2?F2?)= FB8CDE77 339FFE48 1D113C40 BBD5B678
b) F 3 = F 2 ⊕ C 2 = F_3=F_2 \oplus C_2= F3?=F2?C2?= (AC5398FA 8DA329C9 94D4CFF4 B44C2BC5) ⊕ \oplus (FB8CDE77 339FFE48 1D113C40 BBD5B678) = = = 57DF468D BE3CD781 89C5F3B4 0F999DBD


i = 3 i=3 i=3时:
P 3 ⊕ F 3 = P_3 \oplus F_3= P3?F3?= (30C81C46 A35CE411 E5FBC119 1A0A52EF) ⊕ \oplus (57DF468D BE3CD781 89C5F3B4 0F999DBD) = = = 67175ACB 1D603390 6C3E32AD 1593CF52
a) C 3 = E k ( P 3 ⊕ F 3 ) = C_3=E_k(P_3 \oplus F_3)= C3?=Ek?(P3?F3?)= 6FFC9916 F98F94FF 12D78319 707E2404
b) F 4 = F 3 ⊕ C 3 = F_4=F_3 \oplus C_3= F4?=F3?C3?= (57DF468D BE3CD781 89C5F3B4 0F999DBD) ⊕ \oplus (6FFC9916 F98F94FF 12D78319 707E2404) = = = 3823DF9B 47B3437E 9B1270AD 7FE7B9B9


i = 4 i=4 i=4时:
P 4 ⊕ F 4 = P_4 \oplus F_4= P4?F4?= (F69F2445 DF4F9B17 AD2B417B E66C3710) ⊕ \oplus (3823DF9B 47B3437E 9B1270AD 7FE7B9B9) = = = CEBCFBDE 98FCD869 363931D6 998B8EA9
a) C 4 = E k ( P 4 ⊕ F 4 ) = C_4=E_k(P_4 \oplus F_4)= C4?=Ek?(P4?F4?)= 28718707 605BC1EA C503153E BAA0FB1D


在这里插入图片描述

12.4 BC的解密方式描述

设置反馈变量初始向量: F 1 = I V F_1=IV F1?=IV
解密运算按照如下两个步骤进行:
a)生成明文分组: P i = F i ⊕ D k ( C i ) P_i=F_i \oplus D_k(C_i) Pi?=Fi?Dk?(Ci?)
b)生成反馈变量: F i + 1 = F i ⊕ C i F_{i+1}=F_i \oplus C_i Fi+1?=Fi?Ci?
i = 1 , 2 , . . . , q i=1,2,...,q i=1,2,...,q,重复上述步骤,最后一个循环结束于a)。此过程如下图所示。
在这里插入图片描述

12.5 BC的解密方式示例

本示例使用的分组密码是GB/T 32907——2016中规定的SM4算法。所有变量采用“左高右低”的方式标记,即变量最左侧为其最高位。
密钥密钥为(十六进制):2B7E1516 28AED2A6 ABF71588 09CF4F3C。
初始向量为(十六进制):00010203 04050607 08090A0B 0C0D0E0F。
密文是(十六进制):AC529AF9 89A62FCE 9CDDC5FF B84125CA
????????????????????????????????????FB8CDE77 339FFE48 1D113C40 BBD5B678
????????????????????????????????????6FFC9916 F98F94FF 12D78319 707E2404
????????????????????????????????????28718707 605BC1EA C503153E BAA0FB1D。


i = 1 i=1 i=1时:
F 1 = I V = F_1=IV= F1?=IV= 00010203 04050607 08090A0B 0C0D0E0F
D k ( C 1 ) = D_k(C_1)= Dk?(C1?)= 6BC0BCE1 2A459991 E134741A 7F9E1925
a) P 1 = F 1 ⊕ D k ( C 1 ) = P_1=F_1 \oplus D_k(C_1)= P1?=F1?Dk?(C1?)= (00010203 04050607 08090A0B 0C0D0E0F) ⊕ \oplus (6BC0BCE1 2A459991 E134741A 7F9E1925) = = = 6BC1BEE2 2E409F96 E93D7E11 7393172A
b) F 2 = F 1 ⊕ C 1 = F_2=F_1 \oplus C_1= F2?=F1?C1?= (00010203 04050607 08090A0B 0C0D0E0F) ⊕ \oplus (AC529AF9 89A62FCE 9CDDC5FF B84125CA) = = = AC5398FA 8DA329C9 94D4CFF4 B44C2BC5


i = 2 i=2 i=2时:
D k ( C 2 ) = D_k(C_2)= Dk?(C2?)= 027E12AD 93A08555 0A63A058 F1E3A594
a) P 2 = F 2 ⊕ D k ( C 2 ) = P_2=F_2 \oplus D_k(C_2)= P2?=F2?Dk?(C2?)= (AC5398FA 8DA329C9 94D4CFF4 B44C2BC5) ⊕ \oplus (027E12AD 93A08555 0A63A058 F1E3A594) = = = AE2D8A57 1E03AC9C 9EB76FAC 45AF8E51
b) F 3 = F 2 ⊕ C 2 = F_3=F_2 \oplus C_2= F3?=F2?C2?= (AC5398FA 8DA329C9 94D4CFF4 B44C2BC5) ⊕ \oplus (FB8CDE77 339FFE48 1D113C40 BBD5B678) = = = 57DF468D BE3CD781 89C5F3B4 0F999DBD


i = 3 i=3 i=3时:
D k ( C 3 ) = D_k(C_3)= Dk?(C3?)= 67175ACB 1D603390 6C3E32AD 1593CF52
a) P 3 = F 3 ⊕ D k ( C 3 ) = P_3=F_3 \oplus D_k(C_3)= P3?=F3?Dk?(C3?)= (57DF468D BE3CD781 89C5F3B4 0F999DBD) ⊕ \oplus (67175ACB 1D603390 6C3E32AD 1593CF52) = = = 30C81C46 A35CE411 E5FBC119 1A0A52EF
b) F 4 = F 3 ⊕ C 3 = F_4=F_3 \oplus C_3= F4?=F3?C3?= (57DF468D BE3CD781 89C5F3B4 0F999DBD) ⊕ \oplus (6FFC9916 F98F94FF 12D78319 707E2404) = = = 3823DF9B 47B3437E 9B1270AD 7FE7B9B9


i = 4 i=4 i=4时:
D k ( C 4 ) = D_k(C_4)= Dk?(C4?)= CEBCFBDE 98FCD869 363931D6 998B8EA9
P 4 = F 4 ⊕ D k ( C 4 ) = P_4=F_4 \oplus D_k(C_4)= P4?=F4?Dk?(C4?)= (3823DF9B 47B3437E 9B1270AD 7FE7B9B9) ⊕ \oplus (CEBCFBDE 98FCD869 363931D6 998B8EA9) = = = F69F2445 DF4F9B17 AD2B417B E66C3710


在这里插入图片描述

12.6 分组链接工作模式的性质

12.6.1 场景

为了在分组链接模式中使用分组算法,可以简单地将分组密码算法的输入跟所有前面密文分组的异或值相异或。如CBC算法,过程要从一个初始向量 I V IV IV开始。
只要使用同样的密钥和初始向量对相同的明文进行加密,BC工作模式将生成相同的密文。介意这种性质的用户需要采用某种方法来改变初始明文分组、密钥或初始向量。

12.6.2 性质

BC工作模式的性质有:
a)链接操作使得密文分组依赖于当前的和以前的明文分组,因此对密文分组的重新排序不会导致对相应明文分组的重新排序;
b)使用不同的 I V IV IV从而防止同一明文加密成同一密文;

12.6.3 填充明文

只有长度为分组长度整数倍的明文才能被加密,其他长度的明文需要被填充至分组长度的整数倍。

12.6.4 差错扩散

BC模式的反馈过程具有扩散明文错误的性质,这个问题是由于密文分组的解密依赖于所有前面的密文分组,密文中任一错误都将导致所有后续密文分组的解密出错。

12.6.5 同步

如果解密或解密之间的分组边界丢失了(例如由于一个比特的滑动),则在重新建立正确的分组边界之前加密与解密之间将失去同步。如果分组边界丢失,所有解密操作的结果都是不正确的。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:19:22  更:2022-06-29 19:22:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年3日历 -2024/3/29 21:34:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码