【密码学】块加密(分组加密)的工作模式

这篇具有很好参考价值的文章主要介绍了【密码学】块加密(分组加密)的工作模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、引言

上一篇文章讨论了 DES 算法,现在我们有了“给定 64-bit 的明文、64-bit 的密钥,输出 64-bit 的密文”的加密手段。这离实际应用还有一点点距离,因为要传递的信息当然不止 64 位。

要用 DES 加密一条信息,一般先把信息填充到 64 的倍数,于是就可以分成许多组,每组 8 个字节。利用密钥对每一组进行加密,最终的结果拼接起来,这就是 ECB(Electronic Code Book,电子密码本) 模式。

然而,简单的拼接会暴露一些统计信息,不够安全,还有其他的一些工作模式,能够对每块加密的结果进行再一次混淆。


二、块加密的工作模式

1. ECB(电子密码本)

ECB 是最朴素的工作模式。把明文每 8 位一组进行加密,得到的密文直接拼接。

ECB 模式是最简单的模式。由于每个块都是独立加密的,所以它对并行加密解密很友好。此外,传输过程中出现的偶然错误,不会扩大到影响整个数据。但正因为每个块都独立加密,重复的块会被加密成重复的明文。这会导致泄漏明文的一些统计信息。

2. CBC(密码块链接)

CBC(Cipher-block chaining,密码块链接)模式需要一个初始向量 IV。

加密过程中,先把 IV 与第一块明文混合,再交由 DES 加密;对于下一块,其 IV 采用这一块的加密结果。

分组密码的短块加密方法,安全,安全,密码学
CBC 由于每一个块在加密的时候,都需要把明文与上一个块的加密结果进行异或,故加密是串行的。不过解密可以并行,因为解密时已知每一个密文块,直接拿来异或即可。

分组密码的短块加密方法,安全,安全,密码学
显然,由于明文每次加密开始的时候,都得异或上前一块的密文,故对任何明文的改动,都将会影响到此后的所有块。CBC 克服了 ECB “相同明文块变成相同密文块” 的缺点。

3. CFB(密文反馈)

CFB(Cipher feedback,密文反馈)是一种接近于 流密码 的工作模式。它不用 DES 加密明文,而是把 DES 作为伪随机数生成器,把 IV 作为种子。这样就可以从 IV 和指定的 key 生成字节流,然后把明文与这个字节流异或。

CFB 模式中,每次加密明文的一个字节。故 CFB 模式不需要添加Padding。工作流程如下:

分组密码的短块加密方法,安全,安全,密码学

加密过程中,维护了一个寄存器 reg ,长度为 64-bit,初始值为 IV。每次对明文的一个字节进行加密时,把这个 reg 交给 DES 加密,生成一个 64-bit 的结果 K;然后把 K 的高 8-bit 与明文的这一个字节异或,得到了一个字节的密文。接下来,把这个 8-bit 密文补充到移位寄存器 reg 的最右边,抛弃 reg 此前的高 8 位。

随着加密的进行, reg 不断地变化,每次都往右边加 8 位(也就是上一轮得到的密文)、抛弃掉最左边的 8 位。

CFB 模式的加密(左)和解密(右):

分组密码的短块加密方法,安全,安全,密码学

而解密过程也很简单:既然 CFB 模式是流密码,那么解密的时候,只要得到与加密过程一样的密钥流,拿去与密文异或就能得到明文了。


总结

我们讨论了 ECB, CBC, CFB 三种工作模式,其中:文章来源地址https://www.toymoban.com/news/detail-569418.html

  1. ECB 模式是不安全的模式。
  2. 对明文进行改动,CBC、CFB 模式都会使得后序所有块错误。
  3. CBC 模式,如果密文传输过程中有错误,则后面所有密文都出错。
  4. CFB 模式,如果密文传输过程中出错,只会影响到之后几个块(因为移位寄存器的存在,在 8 个块之后这个错误就会离开 reg ,此后的数据都会正常)。
  5. ECB、CBC 模式需要填充。填充常用 PKCS#5 规则。CFB 模式是类似于流密码的逐字节加密,无需填充。

参考链接

  1. 块加密的工作模式

到了这里,关于【密码学】块加密(分组加密)的工作模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《现代密码学》学习笔记——第三章 分组密码 [二] AES

    版本 密钥长度 分组长度 迭代轮数 AES-128 4 4 10 AES-192 6 4 12 AES-256 8 4 14 (1)字节代换(SubByte) (2)行移位(ShiftRow) (3)列混合(MixColumn) (4)密钥加(AddRoundKey) 1.字节代换   字节代换是非线性变换,独立地对状态的每个字节进行。代换表(S-Box)是可逆的。   将

    2024年02月05日
    浏览(76)
  • 【密码学基础】RSA加密算法

    RSA是一种非对称加密算法,即加密和解密时用到的密钥不同。 加密密钥是公钥,可以公开;解密密钥是私钥,必须保密保存。 基于一个简单的数论事实:两个大质数相乘很容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥;而两个

    2024年02月01日
    浏览(34)
  • 密码学—Vigenere加密Python程序

    古典密码,属于多表加密。 怎么就是多表了? 维吉尼亚密码的加密算法实质是凯撒密码,因为他是先分好小组,然后用密钥串对应着分好组的每一个字母进行加密(因为一个凯撒表用密钥串的一个字母加密),当然是遵循下标相同的,比如秘钥为:abc,明文为qwer,然后明文

    2024年02月11日
    浏览(32)
  • 密码学——古典密码中的基本加密运算附简单例题

    本篇文章将对古典密码中使用到的基本加解密运算进行总结,并展示个别加减密运算的简单例题,从而使读者更加容易理解古典密码中的基本加减密运算的原理。 首先引入密码学中的几个基本定义: M:明文空间,明文的集合 C:密文空间,密文的集合 K:密钥空间(也称密钥

    2024年02月12日
    浏览(58)
  • 密码学【java】初探究加密方式之非对称加密

    非对称加密算法又称现代加密算法。非对称加密是计算机通信安全的基石,保证了加密数据不会被破解。 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey) 和私有密(privatekey) 公开密钥和私有密钥是一对。如果用公开密钥对数据进行加密,只有用对应的

    2024年02月03日
    浏览(38)
  • 【密码学复习】第七章 公钥加密体制(二)

    RSA单向陷门函数及其应用 ElGamal单向陷门函数 1)密钥生成 ① 选择一大素数 p ,选取Z p * 的生成元 g ; ② 任选 小于 p 的随机数 x ,计算 y ≡ g x mod p ; ③ ( y , g , p )为公开密钥, ( x , g , p )为秘密密钥. 2)加密: 设待加密明文为 M . ① 随机选一整数 k ,0 k = p -1; ② 计算密文对

    2024年02月05日
    浏览(35)
  • 【密码学基础】半/全同态加密算法基础学习笔记

    定义:只支持乘法或加法中的一种的同态加密。同态加密指的是允许直接对密文进行计算,密文计算结果解密后与明文直接计算结果相同。 Paillier加解密过程 Paillier的同态性 明文加法 = 密文乘法 明文乘法 = 密文指数幂 Paillier的安全性 基于大整数分解困难问题 相比Paillier,

    2024年02月13日
    浏览(37)
  • 密码学系列4-选择密文安全,同态加密安全性

    本章将介绍Cramer-Shoup加密方案,并证明其安全性。最后讨论了同态加密方案的安全性证明 一、Cramer-Shoup加密 密钥生成 1.定义群 G G G ,群的阶为 q q q ,选取群的生成元

    2024年04月26日
    浏览(26)
  • 【密码学】Java课设-文件加密系统(适用于任何文件)

    文档显示乱码相信大家一定不陌生,一份很喜欢的文档内容/数据,下载到自己电脑上却是这样的 项目中一些核心程序打开是这样的 文件加密,不仅可以提高数据安全性,还可以在很大程度上保护个人权益/财产不被侵犯。 本篇文章采用的是对称加密方式,效果如下。 常见的

    2024年02月04日
    浏览(31)
  • 密码学:一文读懂非对称加密算法 DH、RSA

    我们可能没有在瑞士苏黎世银行存入巨额资产的机会,但相信大多数人都在电影中见到这样一组镜头: 户主带着自己的钥匙来到银行,要求取出自己寄放的物品。银行工作人员验明户主身份后,拿出另一把钥匙同户主一起打开保险柜,将用户寄放物品取出。我们可以把这个保

    2024年01月21日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包