白乐天

道阻且长,行则将至。

详解对称加密算法的填充方式及加密模式

填充方式

填充方式(Padding)是指在加密过程中,为了使得数据块的长度符合加密算法的要求(通常是固定长度),而对数据进行补充的操作。

PKCS#5

用于对8字节块大小的加密算法(如DES)进行填充。

如果数据的长度不是8字节的倍数,则使用填充字节数的值来填充。例如,如果需要填充3个字节,则填充3个字节,其值为 0x03

PKCS#7

是对 PKCS#5 的扩展,适用于块大小为任意字节的加密算法(如AES的16字节块),它的填充方式与PKCS#5相同,但支持更多的块大小。填充字节的值是填充字节的数量。例如,如果需要填充3个字节,则填充3个字节,其值为 0x03

Zero填充

使用字节值为零(0x00)的填充方式,将数据填充至指定块大小。这种方法在一些情况下容易出错,特别是如果明文本身包含零字节时。

加密模式

对称加密算法通常基于分组密码来加密数据。分组密码的基本思想是将数据划分为若干个固定大小的块(如64位、128位等),然后对每个块进行加密。

ECB模式

ECB(Electronic Codebook),也就是电子密码本模式。

原理:将明文分为固定大小的块,对每个块单独加密,生成对应的密文块。

CBC模式

CBC(CBC - Cipher Block Chaining),也就是密码分组链接模式。

每个数据块在加密前都会与前一个密文块进行异或运算,首块数据与初始化向量(IV)进行异或,然后进行加密,使得相同的明文块即使在不同的位置也会生成不同的密文。