密码学入门——分组密码模式

news2024/12/27 16:12:45

文章目录

    • 参考书
    • 一、简介
    • 二、ECB模式
    • 三、CBC模式
    • 四、CFB模式
    • 五、OFB模式
    • 六、CTR模式

参考书

图解密码技术,第三版

一、简介

分组密码工作模式指的是将明文分成固定长度的块,并对每个块应用相同的加密算法进行加密的过程。这些块的长度通常是64位或128位,并且长度必须是加密算法的倍数。

在分组密码工作模式中,每个块都会被加密算法单独处理,然后将它们拼接在一起形成最终的密文。工作模式定义了如何在块之间传递信息,以及如何处理最后一个块,以确保加密的安全性和正确性。

常见的分组密码工作模式包括:

  1. 电子密码本模式(Electronic Codebook,ECB):将每个块单独加密,不考虑前后块之间的关系。这种模式存在的问题是,如果明文中有相同的块,那么它们会被加密成相同的密文,可能会导致安全性问题。

  2. 密码分组链接模式(Cipher Block Chaining,CBC):将前一个块的密文作为当前块的输入,增加了一个初始化向量来保证安全性。这种模式可以防止相同块的问题,并提供了更好的安全性。

  3. 计数器模式(Counter,CTR):将每个块与一个计数器相加来生成密钥流,再将明文与密钥流异或来得到密文。这种模式可以并行处理块,并提供更好的性能。

  4. 密码反馈模式(Cipher Feedback,CFB):将前一个密文块反馈到加密算法中,产生一个密钥流,再将密钥流与明文块异或得到密文。这种模式可以进行流加密和解密,但是需要处理填充。

  5. 输出反馈模式(Output Feedback,OFB):将前一个块的密钥流反馈到加密算法中,产生一个密钥流,再将密钥流与明文块异或得到密文。这种模式可以进行流加密和解密,且不需要填充,但是需要保证密钥流是不可预测的。

选择合适的分组密码工作模式需要考虑其安全性、性能和应用场景等因素。

二、ECB模式

ECB模式是一种加密模式,它是对称加密算法中最简单的一种模式,也是最基础的一种模式之一。ECB模式的全称是Electronic Codebook mode,即电子密码本模式。

在这里插入图片描述
在这里插入图片描述
在ECB模式中,明文会被分成若干个等长的块,每个块单独进行加密,加密后的密文块与明文块一一对应。这意味着,如果存在两个相同的明文块,它们将会被加密成相同的密文块。因此,ECB模式存在一些安全问题,例如对于多次使用同一个密钥,攻击者可以通过分析加密结果来推断出明文。

由于ECB模式的缺陷,现在已经很少使用ECB模式进行加密。常见的替代方案包括CBC模式、CFB模式和OFB模式等。

三、CBC模式

CBC模式是一种对称加密算法中常用的加密模式,全称为Cipher Block Chaining mode,即密码块链模式。在CBC模式中,每个明文块会被先与前一个密文块进行异或运算,然后再进行加密,这样可以使相邻的密文块之间存在一定的关联性。

具体来说,在CBC模式中,首先需要选择一个加密算法和一个密钥。然后,将明文按照固定的块长划分为若干个块,每个块的大小通常为64位或128位。对于第一个明文块,需要和一个初始化向量(IV)进行异或运算,得到一个新的加密块。接着,将这个加密块和密钥一起进行加密,得到第一个密文块。对于后续的明文块,需要先将其与前一个密文块进行异或运算,然后再和密钥一起进行加密,得到一个新的密文块。这个过程一直持续到所有的明文块都被加密为密文块。

解密过程与加密过程相反。首先需要使用密钥将每个密文块进行解密,得到一个新的加密块。然后将这个加密块和前一个密文块进行异或运算,得到明文块。
在这里插入图片描述

CBC模式的优点是相邻的密文块之间存在一定的关联性,这使得攻击者难以通过分析加密结果来推断出明文。同时,由于每个明文块都需要和前一个密文块进行异或运算,因此每个块的加密过程是相互依赖的,这增加了攻击者对加密算法的攻击难度。然而,CBC模式也存在一些缺点,例如需要使用一个初始化向量来保证安全性,如果这个向量被攻击者获取,那么攻击者可以使用这个向量来推断出明文。

四、CFB模式

CFB模式是一种密码分组模式,用于加密块密码算法。CFB模式将明文分为固定长度的块,并使用前一个块的密文来加密当前块。具体来说,CFB模式将前一个密文块作为输入,通过块密码算法生成一个伪随机序列,然后将该序列与当前明文块异或,生成当前密文块。这个过程可以被连续地重复进行,从而加密整个消息。

CFB模式的一个优点是它可以在加密和解密过程中使用相同的算法和密钥。此外,它可以支持可变长度的明文,因为它只需要按块加密。然而,CFB模式也有一些缺点。例如,它不适合在错误传输环境下使用,因为一个错误的密文块将会影响后续的所有密文块。此外,CFB模式也不是一个完全的随机化模式,因为它的加密过程使用了前一个密文块。
在这里插入图片描述

五、OFB模式

OFB模式是一种密码分组模式,用于加密块密码算法。它类似于CFB模式,但是它使用输出反馈(Output Feedback)来生成伪随机序列,而不是使用前一个密文块。具体来说,OFB模式将一个固定长度的随机数作为输入,通过块密码算法生成一个伪随机序列,然后将该序列与明文块异或,生成密文块。接下来,将该伪随机序列向前移动一个块,以生成下一个密文块。这个过程可以被连续地重复进行,从而加密整个消息。

在这里插入图片描述
在这里插入图片描述

OFB模式的一个优点是,它不需要使用前一个密文块,因此它可以在错误传输环境下使用,因为一个错误的密文块只会影响当前的明文块,而不会影响后续的所有密文块。此外,OFB模式也可以支持可变长度的明文,因为它只需要按块加密。然而,OFB模式也有一些缺点。例如,它不是一个完全的随机化模式,因为密钥只在开始时使用一次,随后使用的是伪随机序列。此外,如果伪随机序列被预测或重复使用,那么OFB模式的安全性就会受到影响。

六、CTR模式

CTR模式是一种密码分组模式,用于加密块密码算法。CTR代表计数器(Counter)模式,它使用一个计数器和一个随机数作为输入来加密明文块,并生成密文块。具体来说,CTR模式将计数器和随机数连接在一起,作为输入输入到块密码算法中,生成一个伪随机序列,然后将该序列与明文块异或,生成密文块。计数器在每次加密操作中都会被增加,以确保每个明文块都使用不同的随机序列,从而保证安全性。

CTR模式的一个优点是它具有并行计算的能力,可以同时加密或解密多个块。此外,它也可以支持可变长度的明文,因为它只需要按块加密。与OFB和CFB模式相比,CTR模式不需要使用前一个密文块或伪随机序列,因此它可以在错误传输环境下使用,而且它的安全性也相对较高。

CTR模式的一个缺点是,如果相同的计数器值被重复使用,那么加密的安全性就会受到影响。因此,在使用CTR模式时,计数器值必须是唯一的,并且每次加密操作都应该使用不同的计数器值。此外,CTR模式也不是一个完全的随机化模式,因为它的加密过程使用了计数器和随机数。
在这里插入图片描述
在这里插入图片描述
计数器值的生成方法

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leetcode 654. 最大二叉树

2023.7.9 又是一道递归构造二叉树的题,和昨天做的那道题从中序与后序遍历序列构造二叉树类似,5分钟AC了。 大致思路就是通过找到数组中的最大值,并将其作为根节点,然后递归地构建左子树和右子树,最终返回整个最大二叉树…

PMP项目管理-敏捷

敏捷知识体系: 传统项目特点 1> 一开始就对详细的需求进行很高的投入 2> 价值只有到项目结束的时候才能体现, 风险较高 3> 一开始就要编写很多的文档 4> 客户参与度不高, 澄清完需求之后基本不参与 5> 需要花大量的时间来汇报当前的项目状态 6> 无…

Freertos-mini智能音箱项目---IO扩展芯片PCA9557

项目上用到的ESP32S3芯片引脚太少,选择了PCA9557扩展IO,通过一路i2c可以扩展出8个IO。这款芯片没有中断输入,所以更适合做扩展输出引脚用,内部寄存器也比较少,只有4个,使用起来很容易。 输入寄存器 输出寄存…

线程本地变量交换框架-TransmitterableThreadLocal(阿里开源)

上文 :秒级达百万高并发框架-Disruptor TransmitterableThreadLocal介绍 TransmitterableThreadLocal简称TTL 是阿里巴巴开源的一个框架。TransmittableThreadLocal是对Java中的ThreadLocal进行了增强和扩展。它旨在解决在线程池或异步任务调用链中,Thre…

MAC电脑查看SHA256方式

背景 现在很多网站下载大文件时,以往通过查看文件大小来确定是否下载正确,但是很多情况下,文件下载后大小差不多,但是很多时候却时候出现无法安装的问题,有可能还是下载的文件出现错误,导致文件无法正常使…

机器学习 day25(softmax在神经网络模型上的应用)

输出层采用softmax 在识别手写数字的模型中,预测y只有两个结果,所以输出层采用sigmoid激活函数且只有一个神经元。若预测y有10个结果(0-9),该模型的前向传播计算方式与识别数字的模型完全相同,即隐藏层的…

dubbo概念及基本架构

一. Dubbo概念 1、Dubbo是一个开源的高性能,轻量级的Java RPC框架 RPC:远程服务调用 2、RPC的远程服务调用和SOA的服务治理两种功能。 二. Dubbo架构 0、服务提供方首先启动 1、服务提供方启动后,将其注射到注册中心里 2、消费者想调用提供…

线程随机性

目录 线程随机性的展现 执行start()的顺序不代表执行run()的顺序 在使用多线程技术时,代码运行的结果与代码执行顺序或者调用顺序无关。线程是一个子任务,而CPU是以不确定的方式,或者说是以随机的时间来调用线程中的run方法的。所以说线程执…

nvm 下载nodejs 失败

解决办法: 1.查看nvm安装路径 nvm root2、在安装路径下找到setting.txt,添加两句话 node_mirror: http://npm.taobao.org/mirrors/node/ npm_mirror: https://npm.taobao.org/mirrors/npm/3.再执行nvm install 就可以了。

【uniapp开发小程序】实现读取手机剪切板第一条,识别并以姓名/手机号/收货地址格式输出

效果图&#xff1a; 完整代码&#xff1a; <template><view class""><text>测试</text><view click"pasteContent()" class"content">点击此处可快速识别 您的收货信息</view></view> </templat…

使用chatGPT + AI 绘图生成自己的专属头像

案例介绍 微信头像是朋友认识我们时的第一印象,或许是可爱、妖娆,或许是帅气、成熟,还有自然、厚重、调皮… 我们都有自己独特的故事,独特的思想,独特的爱好,对于头像当然有着自己独到的设计眼光。 接下来请允许我向大家展示如何使用chatGPT、AI绘图工具生成出自己的专属…

【vue学习】权限管理系统前端实现6-主页面布局

1.新建layout文件夹 新建index.vue 添加router const routes [{path: /,name: 首页,component: () > import(../layout)}, 2.登录添加跳转 loginRef.value.validate(async (valid)>{if(valid){try{let resultawait requestUtil.post("login?"qs.stringify(l…

人工智能面试总结-Transformer专题

B站:啥都会一点的研究生 公众号试读:啥都会一点的研究生 目录 说说什么是Transformer?说说Transformer中的Encoder?说说Transformer中的Decoder?说说Transformer在训练与测试阶段Decoder的输入、输出是什么?说说Transformer Encoder和Decoder有哪些不同?说说什么是Tran…

Qt/C++原创项目作品精选(祖传原创/性能凶残)

00 前言说明 从事Qt开发十年有余&#xff0c;一开始是做C#.NET开发的&#xff0c;因为项目需要&#xff0c;转行做嵌入式linux开发&#xff0c;在嵌入式linux上做可视化界面开发一般首选Qt&#xff0c;当然现在可选的方案很多比如安卓&#xff0c;但是十多年前那时候板子性能低…

松下|PCB焊盘脱落常见的几个原因分析

PCB焊盘脱落是电子制造中常见的问题之一&#xff0c;它会导致电路板的性能下降或完全失效。本文将从几个常见原因来分析PCB焊盘脱落的原因&#xff0c;并提供一些预防措施。 一、设计问题 PCB焊盘脱落的一个常见原因是设计问题。一些设计错误可能会导致焊盘的结构不稳定&…

QCC51XX---SPI使用

QCC51XX---系统学习目录_嵌入式学习_force的博客-CSDN博客 了解了I2C的使用,细心的小伙伴已经发现了,在bitserial这个功能里面还能使用SPI。bitserial就是用来使用I2C和SPI的,而这两者的使用,大同小异。 在默认代码使中,是有两个传感器的驱动代码的,分别是加速度传感器ad…

若依@DataScope

DataScope &#xff1a; 根据sys_role 中的 data_scope中的值&#xff0c;来设置数据该怎么过滤&#xff0c;&#xff0c; data_scope 取值&#xff1a; 1 &#xff1a; 不需要过滤2 &#xff1a; 自定义过滤 &#xff1a; 根据 sys_role_dept 这个表关联出来的 dept_id 过滤…

五.LLC谐振变换器

LLC 谐振变换器启动过程分析 LLC 谐振变换器的组成结构中包含容性器件&#xff0c;为了尽可能减小输出电压纹波&#xff0c;钳位输出电压&#xff0c;此时希望输出滤波电容尽可能的大&#xff0c;因此也会在启动的时候&#xff0c;电容两端电压近似为 0&#xff0c;系统对电容…

Final2x-开源图片无损放大工具 提升分辨率到任意尺寸

一、Final2x是什么 Final2x是一款开源、跨平台的图片无损放大工具&#xff0c;内置多个模型&#xff0c;能够将图片提升分辨率到任意尺寸&#xff0c;增强图像的分辨率和质量&#xff0c;使图像更清晰、更详细。目前支持RealCUGAN、RealESRGAN、Waifu2x、SRMD等多种模型。支持…

不会写代码,咋做爬虫

随着时代的发展&#xff0c;大数据越来越重要&#xff0c;数据获取很关键 提到数据获取大家应该都会想到爬虫&#xff0c;但是我不会写代码怎么玩爬虫 今天给大家分享一个不会代码也可以进行爬虫的工具&#xff0c;实现无代码进行数据获取 强调 这里介绍的工具大家合理合法使用…