加密模式全解析


加密算法基本分为两类:块加密和流加密。

流加密

使用密钥产生出一个伪随机的位流(特点:周期极长,可以重现),这个伪随机的数据流和明文数据流进行XOR的结果作为密文数据流。

块加密

将数据分成同样大小的多个块,每次对一个块进行加密,因此有时需要补位等预处理。

块加密有5种加密模式:

1ECB(电子密码本模式)

将明文数据分成若干块,每块的大小跟加密密钥长度相同,然后每块都用相同的密钥进行加密。

114352_w158_593413.png

2CBC(密码分组链接模式)

同样也要将将明文数据分成若干块,使用初始向量与明文块做XOR得到的结果块使用密钥进行加密,得到密文块。密文块又作为下一个明文块XOR的向量使用。

114418_I9Et_593413.png

PCBC是一种改进模式,新的向量由密文块和明文块XOR产生。

132229_QZ55_593413.png

3CFB(密码反馈模式)

在尺寸为一个块大小的寄存器里保存有初始向量,密钥加密寄存块之后取结果块的最左侧字节与明文第一个字节XOR,结果作为密文的第一个字节,随后寄存器原数据左移一字节,将该字节压入寄存器最右侧,进行下一字节的加密。

130556_i846_593413.png

4OFB(输出反馈模式)

过程和CFB很类似,只是压入寄存器最右侧的字节是加密结果块的最左侧字节。

130618_2aQA_593413.png

可以看到,明文和密文只在最后才采用了加密和解密,而寄存器的数据变化与明文和密文无关,这实质上是用块加密法来产生流加密的伪随机数据流的方法。

OFB的一个变体,是采用明文全为0的CBC算法来生成伪随机数据流:

130633_CsEC_593413.png

5CTR(计算器模式)

这种模式也是用块加密来实现流加密的一种方法。最简单的情况,初始向量和一个递增的计数器拼为一个块,该块经加密作为伪随机数据流的一个块的数据,计数器有规律的改变其值并和初始向量拼接为下一个用于加密生成伪随机数据流的块。如下:

130649_85uL_593413.png

转载于:https://my.oschina.net/liudiwu/blog/281949

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值