密码学_AES-加密算法 详解


参考文章:

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

https://blog.csdn.net/charleslei/article/details/48710293


2.分组对称加密模式:ECB/CBC/CFB/OFB

https://blog.csdn.net/aaaaatiger/article/details/2525561


3.aes加密解密,含 128、192、256位,cbc、cfb、ecb、ofb、pcbc模式

https://blog.csdn.net/e_Inch_Photo/article/details/80455399


4.AES模式和填充

https://www.jianshu.com/p/1ec9f8819db9


5.java加密算法之AES小记

https://blog.csdn.net/u013749540/article/details/70228033


    最近对接某媒体,其部分内容使用了 AES 对称加密算法,我对该算法做了一些大致的研究,

整理如下:


1.什么是AES加密算法

2.AES常见的几种加密模式与填充模式

3.AES算法的几种加密模式介绍

4.AES算法的几种加密模式优缺点

5.AES算法的填充模式介绍

6.AES算法的Java实现




1.什么是AES加密算法

    高级加密标准(Advanced Encryption Standard: AES)是美国国家标准与技术研究院(NIST)在2001年建立了电子数据的加密规范。它是一种分组加密标准,每个加密块大小为128位,允许的密钥长度为128、192和256位。
    

2.AES常见的几种加密模式与填充模式


    AES支持五种模式:CBC,CFB,ECB,OFB,PCBC

    jce中实现了三种补码方式:NoPadding,PKCS5Padding,ISO10126Padding;

不支持SSL3Padding,不支持“NONE”模式。

    

    ECB:是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。

    CBC:是一种循环模式,前一个分组的密文和当前分组的明文异或操作后再加密,这样做的目的是增强破解难度。

    CFB/OFB实际上是一种反馈模式,目的也是增强破解的难度。

    ECB和CBC的加密结果是不一样的,两者的模式不同,而且CBC会在第一个密码块运算时加入一个初始化向量。


下面对模式与填充方式的组合做一个总结:

算法/模式/填充                 字节加密后数据长度       不满16字节加密后长度  
AES/CBC/NoPadding                   16                          不支持  
AES/CBC/PKCS5Padding                32                          16  
AES/CBC/ISO10126Padding             32                          16  
AES/CFB/NoPadding                   16                          原始数据长度  
AES/CFB/PKCS5Padding                32                          16  
AES/CFB/ISO10126Padding             32                          16  
AES/ECB/NoPadding                   16                          不支持  
AES/ECB/PKCS5Padding                32                          16  
AES/ECB/ISO10126Padding             32                          16  
AES/OFB/NoPadding                   16                          原始数据长度  
AES/OFB/PKCS5Padding                32                          16  
AES/OFB/ISO10126Padding             32                          16  
AES/PCBC/NoPadding                  16                          不支持  
AES/PCBC/PKCS5Padding               32                          16  
AES/PCBC/ISO10126Padding            32                          16

AES算法的几种加密模式介绍

ECB模式(电子密码本模式:Electronic codebook)

    ECB是最简单的块密码加密模式,加密前根据加密块大小(如AES为128位)分成若干块,

之后将每块使用相同的密钥单独加密,解密同理。


加密流程:



解密流程:



    ECB模式由于每块数据的加密是独立的因此加密和解密都可以并行计算,

ECB模式最大的缺点是相同的明文块会被加密成相同的密文块,这种方法在某些环境下不能提供严格的数据保密性。



CBC模式(密码分组链接:Cipher-block chaining)

    CBC模式对于每个待加密的密码块在加密前会先与前一个密码块的密文异或然后再用加密器加密。

第一个明文块与一个叫初始化向量的数据块异或。

    对于这个初始化向量,我们一般称呼其为IV

加密流程:

    

解密流程:


    CBC模式相比ECB有更高的保密性,但由于对每个数据块的加密依赖与前一个数据块的加密,

所以加密无法并行。

与ECB一样在加密前需要对数据进行填充,不是很适合对流数据进行加密。




CFB模式(密文反馈:Cipher feedback)

    与ECB和CBC模式只能够加密块数据不同,CFB能够将块密文(Block Cipher)转换为流密文(Stream Cipher)。


加密流程:


解密流程:


注意:CFB、OFB和CTR模式中解密也都是用的加密器而非解密器。

CFB的加密工作分为两部分:
  1. 将一前段加密得到的密文再加密;
  2. 将第1步加密得到的数据与当前段的明文异或。

    由于加密流程和解密流程中被块加密器加密的数据是前一段密文,因此即使明文数据的长度不是加密块大小的整数倍

也是不需要填充的,这保证了数据长度在加密前后是相同的。

    128位的CFB是对前一段数据的密文用块加密器加密后保存在IV中,之后用这128位数据与后面到来的128位数据异或,

   

CFB 的其他扩展

     CFB128是每处理128位数据调用一次加密器,

    此外还有两种常用的CFB是CFB8和CFB1,前者每处理8位调用一次加密器,后者每处理1位调用1次加密器,

就运算量来讲CFB1是CFB8的8倍,是CFB128的128倍。对于CFB8和CFB1需要将IV作为移位寄存器。


CFB8的加密流程
  1. 使用加密器加密IV的数据;
  2. 将明文的最高8位与IV的最高8位异或得到8位密文;
  3. 将IV数据左移8位,最低8位用刚刚计算得到的8位密文补上。

重复1到3。

CFB1的加密流程
  1. 使用加密器加密IV的数据;
  2. 将明文的最高1位与IV的最高1位异或得到1位密文;
  3. 将IV数据左移1位,最低1位用刚刚计算得到的1位密文补上。

重复1到3。



OFB模式(输出反馈:Output feedback)

OFB是先用块加密器生成密钥流(Keystream),然后再将密钥流与明文流异或得到密文流,

    解密是先用块加密器生成密钥流,再将密钥流与密文流异或得到明文,由于异或操作的对称性,

所以加密和解密的流程是完全一样的。

加密流程:


解密流程:



OFB与CFB一样都非常适合对流数据的加密,OFB由于加密和解密都依赖与前一段数据,所以加密和解密都不能并行。




4.AES算法的几种加密模式优缺点


ECB模式

优点:

1.简单; 

2.有利于并行计算; 

3.误差不会被传送; 

缺点: 

1.不能隐藏明文的模式; 

2.可能对明文进行主动攻击; 


================================


CBC模式

优点: 

1.不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。 

缺点:

1.不利于并行计算; 

2.误差传递; 

3.需要初始化向量IV 


===============================


CFB模式

优点:

1.隐藏了明文模式; 

2.分组密码转化为流模式; 

3.可以及时加密传送小于分组的数据; 

缺点: 

1.不利于并行计算; 

2.误差传送:一个明文单元损坏影响多个单元; 

3.唯一的IV; 


===================================

OFB模式 

优点:

1.隐藏了明文模式; 

2.分组密码转化为流模式; 

3.可以及时加密传送小于分组的数据; 

缺点: 

1.不利于并行计算; 

2.对明文的主动攻击是可能的; 

3.误差传送:一个明文单元损坏影响多个单元; 




5.AES算法的填充模式介绍

        这块我单独整理了一个模块,请直接参考我另一篇文章。

密码学_填充算法-Java支持的几种填充算法与其实现原理

https://blog.csdn.net/u010003835/article/details/81035308


6.AES算法的Java实现

    这部分我单独写了一篇文章,有需要的请参考我的另一篇文章。


  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
密码学(在西欧语文中,源于希腊语kryptós“隐藏的”,和gráphein“书写”)是研究如何隐密地传递信息的学科。在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。著名的密码学者Ron Rivest解释道:“密码学是关于如何在敌人存在的环境中通讯”,自工程学的角度,这相当于密码学与纯数学的异同。密码学是信息安全等相关议题,如认证、访问控制的核心。密码学的首要目的是隐藏信息的涵义,并不是隐藏信息的存在。密码学也促进了计算机科学,特别是在于电脑与网络安全所使用的技术,如访问控制与信息的机密性。密码学已被应用在日常生活:包括自动柜员机的芯片卡、电脑使用者存取密码、电子商务等等。密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。密码学(在西欧语文中,源于希腊语kryptós“隐藏的”,和gráphein“书写”)是研究如何隐密地传递信息的学科。在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。著名的密码学者Ron Rivest解释道:“密码学是关于如何在敌人存在的环境中通讯”,自工程学的角度,这相当于密码学与纯数学的异同。密码学是信息安全等相关议题,如认证、访问控制的核心。密码学的首要目的是隐藏信息的涵义,并不是隐藏信息的存在。密码学也促进了计算机科学,特别是在于电脑与网络安全所使用的技术,如访问控制与信息的机密性。密码学已被应用在日常生活:包括自动柜员机的芯片卡、电脑使用者存取密码、电子商务等等。密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。密码学是在编码与破译的斗争实践中逐步发展起来的,并随着先进科学技术的应用,已成为一门综合性的技术科学。它与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。它的现实研究成果,特别是各国政府现用的密码编制及破译手段都具有高度的机密性。 进行明密变换的法则,称为密码的体制。指示这种变换的参数,称为密钥。它们是密码编制的重要组成部分。密码体制的基本类型可以分为四种:错乱--按照规定的图形和线路,改变明文字母或数码等的位置成为密文;代替--用一个或多个代替表将明文字母或数码等代替为密文;密本--用预先编定的字母或数字密码组,代替一定的词组单词等变明文为密文;加乱--用有限元素组成的一串序列作为乱数,按规定的算法,同明文序列相结合变成密文。以上四种密码体制,既可单独使用,也可混合使用 ,以编制出各种复杂度很高的实用密码。20世纪70年代以来,一些学者提出了公开密钥体制,即运用单向函数的数学原理,以实现加、脱密密钥的分离。加密密钥是公开的,脱密密钥是保密的。这种新的密码体制,引起了密码学界的广泛注意和探讨。利用文字和密码的规律,在一定条件下,采取各种技术手段,通过对截取密文的分析,以求得明文,还原密码编制,即破译密码。破译不同强度的密码,对条件的要求也不相同,甚至很不相同。 密码技术的目的很明确,就是为了解决信息安全问题。信息安全可分为四类特性:1、机密性:为了防止信息被窃,对应的密码技术有对称密码和公钥密码。2、完整性:为了防止信息被篡改,对应的密码技术有单向散列函数、消息认证码、数字签名。3、认证:为了防止攻击者伪装成真正的发送者,对应的密码技术有消息认证码和数字签名。4、不可否认性:为了防止发送者事后否认自己没有做过,对应的密码技术为数字签名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值