pkcs5 padding和pkcs7 padding的区别

本文详细解释了PKCS5和PKCS7填充模式在加密算法中的作用及应用,包括它们如何确保数据长度符合块加密的要求,并解决了填充可能导致的解密问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pkcs5 padding和pkcs7 padding都是加密数据时用来填充数据的一种模式。

先说下block_size,即块大小。在加密算法中(如DES,AES,RSA),数据是分块加密的(为什么要分块,因为整块加密数据量有可能太大)。分块的话,就得按照一定的长度即block_size来分,大多数加密算法中的分块大小默认都是64bits,即8个字节,block_size=8。如果需要加密的数据(明文)的字节码的长度不是块大小的整数倍,那么就需要在末尾进行填充。那么如何填充呢?这就是本文要说的pkcs5和pkcs7填充模式(还有pkcs1,用于RSA加密算法,比较复杂,这里不说了,自行百度)。

重点:PKCS #5 填充字符串由一个1~8位的字节序列组成,每个字节填充“该字节序列的长度”。  

使用PKCS5,填充时:

要填充7个字节,那么填入的值就是0×07;

如果只填充1个字节,那么填入的值就是0×01;

示例:

PKCS5的块长度为 8

数据长度为 9时,则填充为8位字节的倍数,需要补7位字节,即填充字节序列的长度等于 7,则每个字节应填充07,示例如下:

数据: FF FF FF FF FF FF FF FF FF

PKCS7 填充: FF FF FF FF FF FF FF FF FF 07 07 07 07 07 07 07

数据长度为 10时,则填充为八位字节的倍数,需要补6位字节,即填充字节序列的长度等于 6,则每个字节应填充06,示例如下:

数据: FF FF FF FF FF FF FF FF FF FF

PKCS7 填充: FF FF FF FF FF FF FF FF FF FF 06 06 06 06 06 06

另外:还有一种情况就是数据长度恰好是8的倍数,那么后面还需要填充吗?

答案是:需要,数据恰好是8的倍数时还要补8个字节的0×08。

正是这种即使恰好是8的倍数也需要再补充字节的规定,可以让解密算法在解密数据后,很确定无误的移除多余的字节。

让我们做一个假设:如果有一个明文恰好是:FF FF FF FF FF FF FF FF FF FF 06 06 06 06 06 06

那么解密后,我怎么知道后面的6个06就是原来的明文,还是末尾的填充?如果我把后面的6位06 06 06 06 06 06当成padding给去掉的话,就破坏了原文,导致解密后的明文与原来的明文不一致。

解决方法就是,这种情况下,明文填充后应该是:FF FF FF FF FF FF FF FF FF FF 06 06 06 06 06 06 08 08 08 08 08 08 08 08,这样的话,就不会出现混乱。解密算法可以确定最后面的8位一定是填充数据,从而避免出现错误。

最后,说一下PKCS7和PKCS5的区别就是数据分块的大小(就是这么简单):

  • PKCS5填充块的大小为8bytes(64位)
  • PKCS7填充块的大小可以在1-255bytes之间。

综上所述,可以说PKCS7是兼容PKCS5的,PKCS5相当于PKCS7的一个子集。

因为AES的要求的分块长度固定为128 比特(密钥key长度则可以是128,192或256比特),所以填充方法一定是PKCS7

本文参考:https://www.cnblogs.com/midea0978/articles/1437257.html

### starRC、LEF DEF 文件的 EDA 工具使用教程 #### 关于 starRC 的使用说明 starRC 是由 Synopsys 开发的一款用于寄生参数提取 (PEX) 的工具,在 detail routing 完成之后被调用,以提供精确的电阻电容延迟分析数据[^2]。该工具能够处理复杂的多层互连结构并支持多种工艺节点。 对于 starRC 的具体操作指南,通常可以从官方文档获取最权威的信息。访问 Synopsys 官方网站的技术资源页面,可以找到最新的产品手册以及应用笔记等资料。此外,还可以通过在线帮助系统获得交互式的指导支持服务。 #### LEF DEF 文件格式解析及其在 Cadence 中的应用 LEF(Library Exchange Format) DEF(Design Exchange Format)是两种广泛应用于集成电路布局布线阶段的标准文件格式之一[^3]。前者主要用于描述标准单元库中的元件几何形状;后者则记录了整个芯片版图的设计信息,包括但不限于各个模块的位置关系、网络连接情况等重要细节。 当涉及到这些文件类型的编辑或读取时,Cadence 提供了一系列强大的平台级解决方案,比如 Virtuoso Layout Editor 就可以直接打开并修改 LEF/DEF 格式的项目工程。为了更好地理解运用这两种文件格式,建议参阅 Cadence 发布的相关培训材料或是参加其举办的专项课程学习活动。 ```bash # 示例命令:查看 LEF 或 DEF 文件内容 cat my_design.lef cat my_design.def ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值