《深入浅出HTTPS》读书笔记(13):块密码算法之迭代模式(续)

CTR模式

每次迭代运算的时候要生成一个密钥流(keystream)。

各个密钥流之间是有关系的,最简单的方式就是密钥流不断递增,所以才叫作计数器模式。

◎在处理迭代之前,先生成每个密钥流,有n个数据块,就有n个密钥流。根据第n个密钥流可以得到第n+1个密钥流,最简单的方式就是密钥流每次递增加一。

◎第一个密钥流的获取方式也很简单,就是生成一个随机值(Nonce),Nonce和IV可以等同理解,一个不容易推导出来的随机值。

填充标准

PKCS#7和PKCS#5标准,更确切地说是这两个标准中的填充机制标准。

zero字符填充模式最大的问题就是如果明文末尾本身就存在zero字符,解密后得到的明文就不是原始明文了。

PKCS#7填充标准

根据填充的字节数量进行对应的填充,如果填充的字节长度n是3,填充的值就是030303;如果n是5,那么填充的值就是0505050505,填充值最后一个字节代表的就是实际填充的长度。

PKCS#5和PKCS#7处理填充机制的方式其实是一样的,只是PKCS#5处理的分组长度只能是8字节,而PKCS#7处理的分组长度可以是1到255任意字节。

AES算法中分组长度没有8字节,所以AES算法使用PKCS#7标准。

相关推荐
小O的算法实验室1 天前
2026年ASOC,基于深度强化学习的无人机三维复杂环境分层自适应导航规划方法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
为何创造硅基生物1 天前
ESP32S3的RGB屏幕漂移问题
网络
好运的阿财1 天前
process 工具与子agent管理机制详解
网络·人工智能·python·程序人生·ai编程
郭涤生1 天前
STL vector 扩容机制与自定义内存分配器设计分析
c++·算法
周杰伦fans1 天前
C# required 关键字详解
开发语言·网络·c#
༾冬瓜大侠༿1 天前
vector
c语言·开发语言·数据结构·c++·算法
洛水水1 天前
深入理解网络编程核心:Reactor、IOCP 与异步 IO 模型详解
网络·iocp
Ricky111zzz2 天前
leetcode学python记录1
python·算法·leetcode·职场和发展
汀、人工智能2 天前
[特殊字符] 第58课:两个正序数组的中位数
数据结构·算法·数据库架构··数据流·两个正序数组的中位数
liu****2 天前
第16届省赛蓝桥杯大赛C/C++大学B组(京津冀)
开发语言·数据结构·c++·算法·蓝桥杯