分组加密工作模式(ECB/CBC/CFB/OFB/CTR)

分组加密工作模式

目录

  • 分组加密工作模式

    • 符号说明
    • ECB(Electronic Codebook)
    • CBC(Cipher Block Chaining)
    • CFB(Cipher Feedback)
    • OFB(Output Feedback)
    • CTR(Counter)
      • 计数块的生成
    • 参考资料

符号说明

  • \(b\): 分组位长度;
  • \(n\): 明文中分组或分段个数;
  • \(s\): 分段数据的位长度;
  • \(u\): 最后一个明文块或密文块的位长度;
  • \(C_i\): 第\(i\)个密文块(block);
  • \(C_{i}^{\#}\): 第\(i\)个密文段(segment);
  • \(C_{n}^{*}\): 最后一个密文块;
  • \(O_i\): 第\(i\)个输出块;
  • \(P_i\): 第\(i\)个明文块;
  • \(P_{i}^{\#}\): 第\(i\)个明文段;
  • \(P_{n}^{*}\): 最后一个明文块;
  • \(T_i\): 第\(i\)个计数块;
  • \(x\dots y\): y拼接到x之后;
  • \(x\oplus y\): x异或y;
  • \(CIPH_{K}(x)\): 对数据块\(x\)使用密钥\(K\)进行前向加密函数加密;
  • \(CIPH_{K}^{-1}(x)\): 对数据块\(x\)使用密钥\(K\)进行逆加密函数解密;
  • \([x]_{m}\): 非负整数\(x\)按m位二进制表示;
  • \(IV\): 初始化向量, 可通过随机数生成算法生成一个位长度为\(b\)的向量;
  • \(LSB_{m}(x)\): x的最低有效m位;
  • \(MSB_{m}(x)\): x的最高有效n位;

ECB(Electronic Codebook)

ECB加密解密过程数学表达式如下:

\[\begin{aligned}
& C_i = CIPH_{K}(P_i), \qquad i = 0\cdots n \& P_i = CIPH_{K}^{-1}(C_i), \qquad i = 0\cdots n
\end{aligned}
\]

CBC(Cipher Block Chaining)

CBC加密解密过程数学表达式如下:

\[\begin{aligned}
& C_0 = CIPH_{K}(P_{0}\oplus IV) \& C_i = CIPH_{K}(P_{i}\oplus C_{i-1}), \qquad i = 1\cdots n \& P_0 = CIPH_{K}^{-1}(C_{0})\oplus IV \& P_i = CIPH_{K}^{-1}(C_{i})\oplus C_{i-1}, \qquad i = 1\cdots n
\end{aligned}
\]

CFB(Cipher Feedback)

CFB加密解密过程数学表达式如下:

\[\begin{aligned}
& I_0 = IV \& I_i = LSB_{b-s}(I_{i-1})\dots C_{i-1}^{\#}, \qquad i=1\cdots n \& O_i = CIPH_{K}(I_i), \qquad i=0\cdots n\& C_{i}^{\#} = P_{i}^{\#}\oplus MSB_{s}(O_i), \qquad i=0\cdots n \& \quad \& I_0 = IV \& I_i = LSB_{b-s}(I_{i-1})\dots C_{i-1}^{\#}, \qquad i=1\cdots n \& O_i = CIPH_{K}(I_i), \qquad i=0\cdots n \& P_{i}^{\#} = C_{i}^{\#} \oplus MSB_{s}(O_i), \qquad i=0\cdots n
\end{aligned}
\]

OFB(Output Feedback)

OFB加密解密过程数学表达式如下:

\[\begin{aligned}
& I_0 = IV \& I_i = O_{i-1}, \qquad i=1\cdots n \& O_i = CIPH_{K}(I_i), \qquad i=0\cdots n \& C_{i} = P_{i}\oplus O_{i}, \qquad i=0\cdots n-1 \& C_{n}^{*} = P_{n}^{*} \oplus MSB_{u}(O_n) \& \quad \& I_0 = IV \& I_i = O_{i-1}, \qquad i=1\cdots n \& O_i = CIPH_{K}(I_i), \qquad i=0\cdots n \& P_i = C_{i}\oplus O_{i}, \qquad i=0\cdots n-1 \& P_{n}^{*} = C_{n}^{*}\oplus MSB_{u}(O_n)
\end{aligned}
\]

CTR(Counter)

CTR加密解密过程数学表达式如下:

\[\begin{aligned}
& O_{i} = CIPH_{K}(T_{i}), \qquad i=0\cdots n \& C_{i} = P_{i} \oplus O_{i}, \qquad i=0\cdots n-1 \& C_{n}^{*} = P_{n}^{*} \oplus MSB_{u}(O_n) \& \quad \& O_{i} = CIPH_{K}(T_{i}), \qquad i=0\cdots n \& P_{i} = C_{i} \oplus O_{i}, \qquad i = 0\cdots n-1 \& P_{n}^{*} = C_{n}^{*}\oplus MSB_{u}(O_n)
\end{aligned}
\]

计数块的生成

CTR加密解密过程需要计数块\(T_{i}\)的参与, 其生成步骤如下:

  • 选定初始化计数块\(T_{0}\);

记\(T_i\)的位长度为\(m\), 需保证\(n\lt m\le b\), 在\(2^m\)个数中任意选定一个作为初始值.

  • 递增生成后续计数块\(T_{0\cdots n}\), 那么生成方法如下:

\[T_{i} = (T_{i-1}+1) \mod 2^{m}, \qquad i=1\cdots n
\]

参考资料

  • NIST 800-38A;

原文地址:https://www.cnblogs.com/mengsuenyan/p/12704365.html

时间: 2024-10-10 18:51:09

分组加密工作模式(ECB/CBC/CFB/OFB/CTR)的相关文章

分组对称加密模式:ECB/CBC/CFB/OFB(转)

一般的加密通常都是块加密,如果要加密超过块大小的数据,就需要涉及填充和链加密模式,文中提到的ECB和CBC等就是指链加密模式.在C#组件中实现的很多算法和Java都不太兼容,至少我发现RSA和AES/ECB是如此.研究了AES/ECB时发现了这篇文档,图还画的不错,先记下.注意,还缺一种CTR的模式. 对称加密和分组加密中的四种模式(ECB.CBC.CFB.OFB) 一. AES对称加密:                                                     

分组加密的四种模式(ECB、CBC、CFB、OFB)

加密一般分为对称加密(Symmetric Key Encryption)和非对称加密(Asymmetric Key Encryption). 对称加密又分为分组加密和序列password. 分组password.也叫块加密(block cyphers).一次加密明文中的一个块.是将明文按一定的位长分组,明文组经过加密运算得到密文组,密文组经过解密运算(加密运算的逆运算),还原成明文组. 序列password.也叫流加密(stream cyphers),一次加密明文中的一个位.是指利用少量的密钥(

分组加密的工作模式

分组加密算法把数据分成固定长度的分组处理,算法的输入长度为一个分组的长度.为了改善安全性,适应不同的应用环境,分组加密有多种不同的工作模式.最常见的四种工作模式是:ECB,CBC,CFB,OFB. ECB模式, ECB模式是最简单的基本模式.在密钥的控制下,把一个分组长度的输入,转换为一个分组长度的输出.一个分组算法设计出来就是ECB模式的.这一模式用于实际应用加密的问题是,容易遭受字典攻击.ECB模式下,只要密钥确定了,相同明文一定输出相同密文.这一特性如同谍战片里的替换密码本,一字对一字.这

分组加密的四种模式

(以下内容整理自网络文章)加密一般分为对称加密(Symmetric Key Encryption)和非对称加密(Asymmetric Key Encryption). 对称加密又分为分组加密和序列密码.分组密码,也叫块加密(block cyphers),一次加密明文中的一个块.是将明文按一定的位长分组,明文组经过加密运算得到密文组,密文组经过解密运算(加密运算的逆运算),还原成明文组.序列密码,也叫流加密(stream cyphers),一次加密明文中的一个位.是指利用少量的密钥(制乱元素)通过

关于DES加密中的 DESede/CBC/PKCS5Padding

今天看到一段3DES加密算法的代码,用的参数是DESede/CBC/PKCS5Padding,感觉比较陌生,于是学习了一下. 遇到的java代码如下: Cipher cipher=Cipher.getInstance("DESede/CBC/PKCS5Padding"); 以前写的代码,给的参数都是DES或DESede.实际上DESede是简写,它与DESede/ECB/PKCS5Padding等价.这个参数分为三段. - 第一段是加密算法的名称,如DESede实际上是3-DES.这一

高级加密标准AES的工作模式(ECB、CBC、CFB、OFB)

高级加密标准(Advanced Encryption Standard: AES)是美国国家标准与技术研究院(NIST)在2001年建立了电子数据的加密规范.它是一种分组加密标准,每个加密块大小为128位,允许的密钥长度为128.192和256位. ECB模式(电子密码本模式:Electronic codebook) ECB是最简单的块密码加密模式,加密前根据加密块大小(如AES为128位)分成若干块,之后将每块使用相同的密钥单独加密,解密同理. CBC模式(密码分组链接:Cipher-bloc

对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)

对称加密和分组加密中的四种模式(ECB.CBC.CFB.OFB) 一. AES对称加密: AES加密 分组 二. 分组密码的填充 分组密码的填充 e.g.: PKCS#5填充方式 三. 流密码:   四. 分组密码加密中的四种模式: 3.1 ECB模式 优点: 1.简单: 2.有利于并行计算: 3.误差不会被传送: 缺点: 1.不能隐藏明文的模式: 2.可能对明文进行主动攻击: 3.2 CBC模式: 优点: 1.不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL.IPSec的标准.

AES五种加密模式(CBC、ECB、CTR、OCF、CFB)

分组密码有五种工作体制:1.电码本模式(Electronic Codebook Book (ECB)):2.密码分组链接模式(Cipher Block Chaining (CBC)):3.计算器模式(Counter (CTR)):4.密码反馈模式(Cipher FeedBack (CFB)):5.输出反馈模式(Output FeedBack (OFB)). 以下逐一介绍一下: 1.电码本模式(Electronic Codebook Book (ECB)     这种模式是将整个明文分成若干段相同

AES的五种加密模式(CBC、ECB、CTR、OCF、CFB)

AES五种加密模式(CBC.ECB.CTR.OCF.CFB) 分组密码有五种工作体制:1.电码本模式(Electronic Codebook Book (ECB)):2.密码分组链接模式(Cipher Block Chaining (CBC)):3.计算器模式(Counter (CTR)):4.密码反馈模式(Cipher FeedBack (CFB)):5.输出反馈模式(Output FeedBack (OFB)). 以下逐一介绍一下: 1.电码本模式(Electronic Codebook B