热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

分组密码的几种模式

本文主要参考自博文分组密码的几种模式。另外,还可参考另一篇。介绍最详细的是维基百科条目块密码的工作模式,非常值得推荐。电子密码本(ElectronicCodeBook,ECB)

  本文主要参考自博文分组密码的几种模式。另外,还可参考另一篇。

  介绍最详细的是维基百科条目块密码的工作模式,非常值得推荐。

  电子密码本(Electronic Code Book,ECB)
  密码块链接(Cipher Block Chaining,CBC)
  密码反馈(Cipher Feedback,CFB)
  输出反馈(Output Feedback,OFB)
  填充密码块链接(Propagating cipher-block chaining, PCBC)

  分组密码有不同的加密和解密机制。最简单的加密方式就是一个明文数据块加密成一个密文数据块,下一个明文数据块加密成下一个密文数据块,以此类推。这就是电子密码本(ECB)模式。图5-5说明了电子密码本(ECB)模式。

  

  虽然简单,但ECB模式不能为模式识别的密码分析提供保护。这就意味着如果明文中含有两个相同的数据块,则密文中必然会有两个相同的数据块。当我们进行密码分析的时候,一个常用到的技术就是识别和确定密文中存在的模式。一旦模式被确定了,那就很容易推断出使用了ECB加密,这样攻击者只需瞄准解决特定的密文数据块即可,而不必解密整个密文。

  为了解决这个问题,我们介绍一下分组密码的其他几种形式:(1)密码分组链接(CBC);(2)填充密码分组链接(PCBC);(3)密码反馈(CFB);(4)输出反馈(OFB)。本节我只介绍加密方法(把加密的步骤反向就可以得到解密方法)。

  密码分组链接(CBC):如图5-6所示的CBC使用了初始化向量(IV)和第一组明文进行异或操作,然后加密,加密后的密文与下一组明文进行异或操作,以此类推。这种方式保证了每组密文依赖于它前面所有的明文。

  

  填充密码分组链接(PCBC):如图5-7所示的PCBC与前面讲述的CBC非常相似。它们的不同在于,在PCBC中,不仅仅只有初始化向量(IV)与第一组明文进行异或,以及密文与下一组明文进行异或操作,而且还包含初始化向量与第一组密文进行异或操作,以及这个结果与下一组的明文进行异或操作。这种设计方式导致密文中任何一个微小的修改都会导致加密和解密流程发生很大的改变。

 

  

  密码反馈(CFB):如图5-8所示的CFB与CBC相比,初始化向量(IV)和明文颠倒了一下位置。因此与CBC不同,CFB不会先进行初始化向量和第一组明文的异或操作后进行加密,然后密文与下一组明文再进行异或后加密操作,而是它会首先对初始化向量进行加密,然后由加密后的初始化向量与明文进行异或操作生成密文,接着再对这个密文进行加密,然后与下一组明文进行异或操作。

  

  输出反馈(OFB):如图5-9所示的OFB与CFB非常相似。它们的不同在于加密后的初始化向量没有与明文进行异或操作。事实上对于第一组明文,初始化向量加密以后作为第二组明文的输入并且再与第一组明文进行异或操作。后续的加密操作都发生在异或之前。

  

 


推荐阅读
  • 使用TabActivity实现Android顶部选项卡功能
    本文介绍如何通过继承TabActivity来创建Android应用中的顶部选项卡。通过简单的步骤,您可以轻松地添加多个选项卡,并实现基本的界面切换功能。 ... [详细]
  • AI炼金术:KNN分类器的构建与应用
    本文介绍了如何使用Python及其相关库(如NumPy、scikit-learn和matplotlib)构建KNN分类器模型。通过详细的数据准备、模型训练及新样本预测的过程,展示KNN算法的实际操作步骤。 ... [详细]
  • Go从入门到精通系列视频之go编程语言密码学哈希算法(二) ... [详细]
  • 本文详细介绍了在 Ubuntu 16.04 系统上安装和配置 PostgreSQL 数据库的方法,包括如何设置监听地址、启用密码加密、更改默认用户密码以及调整客户端访问控制。 ... [详细]
  • 使用 MATLAB 将高光谱数据集转换为伪彩色 CIE 图像
    本文介绍了一种方法,通过 MATLAB 将高光谱数据集的每个维度的图像转换为伪彩色 CIE 图像。用户只需指定波段即可完成转换。 ... [详细]
  • Windows操作系统提供了Encrypting File System (EFS)作为内置的数据加密工具,特别适用于对NTFS分区上的文件和文件夹进行加密处理。本文将详细介绍如何使用EFS加密文件夹,以及加密过程中的注意事项。 ... [详细]
  • PHP混淆代码的破解与理解
    本文探讨了PHP中常见的代码混淆技术及其破解方法,包括简单的变量名混淆和更复杂的加密技术。 ... [详细]
  • 本文探讨了在使用JavaMail发送电子邮件时,抄送功能未能正常工作的问题,并提供了详细的代码示例和解决方法。 ... [详细]
  • 深入了解Python中的函数定义
    本文详细探讨了Python中函数定义的核心概念,包括基本语法、不同类型的函数参数、递归函数、闭包以及匿名函数等,旨在帮助读者全面掌握Python函数的应用。 ... [详细]
  • 本文详细介绍了PostgreSQL与MySQL在SQL语法上的主要区别,包括如何使用COALESCE替代IFNULL、金额格式化的方法、别名处理以及日期处理等关键点。 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
  • 菜鸟物流用户增长部现正大规模招聘P6及以上级别的JAVA工程师,提供年后入职选项。 ... [详细]
  • 深入解析层次聚类算法
    本文详细介绍了层次聚类算法的基本原理,包括其通过构建层次结构来分类样本的特点,以及自底向上(凝聚)和自顶向下(分裂)两种主要的聚类策略。文章还探讨了不同距离度量方法对聚类效果的影响,并提供了具体的参数设置指导。 ... [详细]
  • QQ推出新功能:个性化QID身份卡
    您是否还记得曾经风靡一时的即时通讯工具QQ?近日,QQ悄然上线了一项新功能——QID身份卡。这项功能将如何改变用户的社交体验?本文为您详细解读。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
author-avatar
程璇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有