分组密码在加密时明文分组的长度是固定的,而实用中待加密消息的数据量是不定的,数据格式可能是多种多样的。为了能在各种应用场合安全地使用分组密码,通常对不同的使用目的运用不同的工作模式。

一、电码本模式(ECB)

将整个明文分成若干段相同的小段,然后对每一小段进行加密。

优:操作简单,易于实现;分组独立,易于并行;误差不会被传送。——简单,可并行,不传送误差。

缺:掩盖不了明文结构信息,难以抵抗统计分析攻击。——可对明文进行主动攻击。

二、密码分组链模式(CBC)

先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密。

优点:能掩盖明文结构信息,保证相同密文可得不同明文,所以不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL和IPSec的标准。

缺点:(1)不利于并行计算;(2)传递误差——前一个出错则后续全错;(3)第一个明文块需要与一个初始化向量IV进行抑或,初始化向量IV的选取比较复杂。

初始化IV的选取方式:固定IV,计数器IV,随机IV(只能得到伪随机数,用的最多),瞬时IV(难以得到瞬时值)

三、输出反馈模式(OFB)

密码算法的输出(指密码key而不是密文)会反馈到密码算法的输入中,OFB模式并不是通过密码算法对明文直接加密,而是通过将明文分组和密码算法的输出进行XOR来产生密文分组。

优点:隐藏了明文模式;结合了分组加密和流密码(分组密码转化为流模式);可以及时加密传送小于分组的数据。

缺点:不利于并行计算;需要生成秘钥流;对明文的主动攻击是可能的。

四 计数器模式(CTR)

完全的流模式。将瞬时值与计数器连接起来,然后对此进行加密产生密钥流的一个密钥块,再进行XOR操作 。

优点:不泄露明文;仅需实现加密函数;无需填充;可并行计算。

缺点:需要瞬时值IV,难以保证IV的唯一性。

五 对比CBC和CTR

(1)CBC需要填充;CTR不用填充。

(2)CBC不可并行;CTR可并行速度快。

(3)CBC需要实现加密和解密函数;CTR实现简单,仅需实现加密函数。

(4)鲁棒性:CBC强于CTR——使用重复瞬时值,CBC会泄露初始明文块,CTR会泄露所有信息。

如果有好的瞬时值选择策略,采用CTR,否则采用CBC。

如加密成绩单,可选用CTR,因为学号唯一。可作为瞬时值。

六 分组密码填充

目的:将明文填充到满足分组大小,解密后再把填充去掉。

如何填充:缺几个字节填充几个自己的几(如缺5个字节,填充5个字节的5);如果不需要填充,则添加一个分组,分组中填充分组大小(如分组大小为64,填充16个字节的16)

七 分组密码模式的安全性

任何分组密码模式都存在信息的泄露,没有一个是完美的,任何分组模式都可能会泄露信息,这只是一个概率的问题。

碰撞概率计算:

M个明文块,块长为N,以两个块组成一对,

不同块的对数为:M(M-1)/2

两个块相等的概率为:1/2的n次方

密文块相等的数量期望为:M(M-1)/2的n+1次方。

则当M(M-1)=2的n+1次方时候,即M约等于2的n/2次方时发生碰撞的概率约等于1。

例如:分组长度为64,则当块数为2的32次方时,即加密数据2的32次方*64bit=256G时便会发生碰撞。

结论:分组密码的安全不仅和秘钥长度有关还和分组长度有关。

AES五种加密模式的更多相关文章

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

    --转载https://www.cnblogs.com/starwolf/p/3365834.html https://www.freebuf.com/column/171939.html 分组密码有 ...

  2. 转:Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种运行模式。

    原文来自于:http://www.ituring.com.cn/article/128439 Windows下的PHP开发环境搭建——PHP线程安全与非线程安全.Apache版本选择,及详解五种运行模 ...

  3. rabbitmq的五种工作模式

    abbitmq的五种工作模式      

  4. PHP5 的五种常用模式

    PHP5 的五种常用模式. 工厂模式 最初在设计模式 一书中,许多设计模式都鼓励使用松散耦合.要理解这个概念,让我们最好谈一下许多开发人员从事大型系统的艰苦历程.在更改一个代码片段时,就会发生问题,系 ...

  5. S-T-E-A-M Science Technology Engineering Art Mathematics 五种思维模式

    S-T-E-A-M五个英文字母分别代表 Science 科学,Technology 技术,Engineering 工程,Art 艺术以及 Mathematics 数学.它们并不是简单地整合原来的分科体 ...

  6. RabbitMQ 五种工作模式

    官网介绍:https://www.rabbitmq.com/getstarted.html 五种工作模式的主要特点 简单模式:一个生产者,一个消费者 work模式:一个生产者,多个消费者,每个消费者获 ...

  7. java单例五种实现模式梳理

    java单例五种实现模式 饿汉式(线程安全,调用效率高,但是不能延时加载) 一上来就把单例对象创建出来了,要用的时候直接返回即可,这种可以说是单例模式中最简单的一种实现方式.但是问题也比较明显.单例在 ...

  8. AES中几种加密模式的区别:ECB、CBC、CFB、OFB、CTR

    AES: aes是基于数据块的加密方式,也就是说,每次处理的数据时一块(16字节),当数据不是16字节的倍数时填充,这就是所谓的分组密码(区别于基于比特位的流密码),16字节是分组长度 分组加密的几种 ...

  9. setDefaultKeyMode设置Activity的五种按键模式

    setDefaultKeyMode (int mode) 用来设置一个Activity的默认的按键模式, mode一共有五种 DEFAULT_KEYS_DISABLE DEFAULT_KEYS_DIA ...

随机推荐

  1. Office2016无法显示最近使用的文档怎么办

    来自:https://zhidao.baidu.com/question/1862342356245742187.html

  2. jquery 笔记总结

    一.jquery 事件 <script type="text/javascript" src="/jquery/jquery.js"></sc ...

  3. PHP 共享内存使用与信号控制

    共享内存 共享内存的使用主要是为了能够在同一台机器不同的进程中共享一些数据,比如在多个 php-fpm 进程中共享当前进程的使用情况.这种通信也称为进程间通信(Inter-Process Commun ...

  4. AngularJS Notes

    ng-app The ng-app directive tells AngularJS that the <div> element is the "owner" of ...

  5. [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 将mysq数据导入hive

    安装hive 1.下载hive-2.1.1(搭配hadoop版本为2.7.3) 2.解压到文件夹下 /wdcloud/app/hive-2.1.1 3.配置环境变量 4.在mysql上创建元数据库hi ...

  6. Java虚拟机垃圾收集器与内存分配策略

    Java虚拟机垃圾收集器与内存分配策略 概述 那些内存须要回收,什么时候回收.怎样回收是GC须要完毕的3件事情. 程序计数器.虚拟机栈与本地方法栈这三个区域都是线程私有的,内存的分配与回收都具有确定性 ...

  7. 指定webapi 返回 json 格式 ; GlobalConfiguration.Configuration.Formatters.Clear()

    因为 Internet Explorer 和 Firefox 发送了不同的 Accept 头,所以 web API 在响应里就发送了不同的内容类型.   解决方法,在 Global.asax的 App ...

  8. 第10章:awk进阶操作

    第10章:awk进阶操作 在第4章:查找与替换简单的讲解了awk的使用,本章介绍详细讲解awk的使用.awk是一个强大的文本分析工具,简单的说awk就是把文件逐行的读入, 以空格为默认分隔符将每行切片 ...

  9. alter system set events相关知识

    格式:alter system|session set events ‘[eventnumber|immediate] trace name eventname [forever] [, level ...

  10. iOS: 查看 UIView 的视图树

    在想要查看的 UIView 附近打个断点,运行,直到停在断点处,在控制台键入:po [view recursiveDescription],回车. (lldb) po [self recursiveD ...