密码学--序列密码与分组密码

1、序列密码
基于Enigma与凯撒密码换位非常容易被破解,因此为了更加安全的加密,出现了序列密码加密方式,它的特点是将明文和密钥进行异或运算;如:明文a,ascll码为97,二进制位01100001;密钥B,ascll码为66,二进制01000010,然后按位异或。
在这里插入图片描述
但序列密码最大的问题有两点:
第一,密钥长度与明文长度一致; 第二,序列密码容易被篡改
目前,公开的序列密码算法主要有RC4、SEAL等。
2、分组密码
分组密码解决了上述问题,他将明文消息编码表示后的数字序列,划分成长度为n个组,每个组有m个字节;每组在密钥的控制下变换成等长的输出数字序列。

1)ECB模式(电子密码本模式)

ECB模式是将明文消息分成固定大小的分组,当最后一个分组的内容小于分组长度时,需要用特定的数据进行填充以至于长度等于分组长度,每个分组的加密和解密都是独立的,可以进行并行操作。使用ECB模式加密时,相同的明文分组会转换为相同的密文分组,也就是说,我们可以将其理解为是一个巨大的“明文分组->密文分组”的对应表,因此ECB模式也称为电子密码本模式,但是安全性较低默认模式,数据按照縣&个字节一段进行加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,则补足8个字节进行计算,之后按照顺序将计算所得的数据连在一起即可,各段数据之间互不影响。
PKCS7 Padding(PKCS5 Padding)填充方式:为,NET和JAVA的默认填充方式,对加密数据字节长度对8取余为「,如r大于0,则补8-r个字节,字节为8-r的值:如果r等于0,则补8个字节8。
比如:
加密字符串为AAA,则补位为AA55555
加密字符串为 BBBBBB,则补位为 BBBBBB22
加密字符串为 CCCCCCC,则补位为 CCCCCCCC88888882)
在这里插入图片描述
2)CBC模式(密码分组链接模式)

CBC模式中的第一个分组需要用初始化向量IV(一个随机的且长度为一个分组长度的比特序列)进行异或操作再进行加密,而后面的每一个分组都要先和前一个分组加密后的密文分组进行异或操作,然后再加密。加密是连续的,不能进行并行操作。无法对单独一个中间的明文分组加密;对初始化向量没有加密。当CBC模式中的密文分组有一个分组损坏,只要密文分组的长度没有发生变化,解密最多会有两个分组受到数据损坏的影响。当CBC的密文分组中有一些比特缺失了・导致密码分组的长度发生变化,此分组发生错位,在缺失比特位置之后的密文分组也就无法全部解密了。
在这里插入图片描述
3)CFB模式(密文反馈模式)

CFB模式是将前一个分组的密文加密后和当前分组的明文进行异或操作生成当前分组的密文,第一个明文分组通过初始化向量V进行加密再与之进行异或操作得到第一个密文分组。CFB模式中有密码算法产生的比特序列成为密钥流(在CFB中密码算法相当于伪随机数生成器),在CFB中分组密码算法在解密时仍执行加密操作(因为密钥流通过加密生成)。对CFB模式可实施重放攻击。

在这里插入图片描述
4)OFB模式(密文反馈模式)

OFB模式是通过将明文分组和密码算法的输出进行异或操作来产生密文分组的,也需要使用初始化向量(IV)。密码算法的输出会反馈到密码算法的输入中,并非通过密码算法加密明文分组的,而通过将明文分组和密码算法的输出进行XOR来产生密文分组(与CFB的区别在于密码算法的输入)。CFB是对密文分组进行反馈,必须按顺序进行加密:OFB是对密钥流进行加密(生成密钥流与XOR运算可以并行)
在这里插入图片描述
5)CTR模式(计数器模式)

在CTR模式中,每次加密时都会生成一个不同的值来作为计算器的初始值,每个分组对应一个逐次累加的计数器,通过对计算器进行加密来生成密钥流,再将密钥流与明文分组进行异或操作得到密文分组。
在这里插入图片描述
五种分组模式优缺点
在这里插入图片描述

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值