常见加解密算法06 - 分组密码的填充与工作模式

news2024/12/25 22:24:20

各位英姿焕发,风华正茂的读者们你们好啊,今天我们讨论一下分组密码的填充与工作模式。

分组密码中,需要将明文按指定大小进行分组,由于明文并非指定大小的整数倍,因此在明文的最后一个分组需要将其填充至加密算法所要求的分组大小后进行加密。在解密时,按照同样的填充模式将填充的数据去除。

加密时填充,解密时删除,这就需要定一个规则,这个规则就是填充模式。

填充模式

NoPadding

不填充,在此填充下原始数据必须是分组大小的整数倍,非整数倍时无法使用该模式,会报错

PKCS5Padding / PKCS7Padding

填充至符合块大小的整数倍,填充值为填充数量数,需要填充7个字节,就全部填07

  • 原始:FF FF FF FF FF FF FF FF FF

  • 填充:FF FF FF FF FF FF FF FF FF 07 07 07 07 07 07 07

PKCS5Padding 的块大小应为 8 个字节,而 PKCS7Padding 的块大小可以在 1~255 的范围内。但 SunJCE 的 Provider 实现中 PKCS5Padding 也按 PKCS7Padding 来进行处理了。

有个细节,如果明文刚好是块的整数倍,也要加填充。

ISO10126Padding

填充至符合块大小的整数倍,填充值最后一个字节为填充的数量数,其他字节随机处理。

  • 原始:FF FF FF FF FF FF FF FF FF

  • 填充:FF FF FF FF FF FF FF FF FF 3F 7A B4 09 14 36 07

ISO7816-4Padding

填充至符合块大小的整数倍,填充值第一个字节为 0x80,其他字节填 0。

  • 原始:FF FF FF FF FF FF FF FF FF

  • 填充:FF FF FF FF FF FF FF FF FF 80 00 00 00 00 00 00

ZeroBytePadding

填充至符合块大小的整数倍,填充值为 0

  • 原始:FF FF FF FF FF FF FF FF FF

  • 填充:FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00

X923Padding

填充至符合块大小的整数倍,填充值最后一个字节为填充的数量数,其他字节填 0。

  • 原始:FF FF FF FF FF FF FF FF FF

  • 填充:FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 07

TBCPadding(Trailing-Bit-Compliment)

填充至符合块大小的整数倍,原文最后一位为“1”时填充 0x00,最后一位为“0”时填充“0xFF”。

  • 原始:FF FF FF FF FF FF FF FF FF

  • 填充:FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00

  • 原始:FF FF FF FF FF FF FF FF F0

  • 填充:FF FF FF FF FF FF FF FF F0 FF FF FF FF FF FF FF

PKCS1Padding

该填充模式是 RSA 加密中使用的,详见 RFC 2313。RSA 加密时,需要将原文填充至密钥大小,填充的格式为:

00 + BT + PS + 00 + D

  • 00 为固定字节

  • BT 为处理模式。公钥操作时为 02,私钥操作为 00 或 01

  • PS 为填充字节,填充数量为 k - 3 - Dk 表示密钥长度,D 表示原文长度。PS 的最小长度为 8 个字节。填充的值根据 BT 值不同而不同:

    • BT = 00 时,填充全 00

    • BT = 01 时,填充全 FF

    • BT = 02 时,随机填充,但不能为 00

工作模式

ECB模式

ECB(Electronic CodeBook)模式,即电子密码本模式。该模式是将明文分组,加密后直接成为密文分组,分组之间没有关系。

ECB模式是所有模式中最简单的一种,该模式的明文分组与密文分组是一一对应的关系,若明文分组相同,其密文分组也一定相同。因此,ECB模式也是最不安全的模式。

可使用该模式测试一下输入与输出:

https://gchq.github.io/CyberChef

可以看到,明文重复的时候,密文也是重复的,后面的是填充。

CBC模式

CBC(Cipher Block Chaining)模式,即密码分组链接模式。该模式首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。只有第一个明文分组特殊,需要提前为其生成一个与分组长度相同的比特序列,进行XOR运算,这个比特序列称为初始化向量(Initialization Vector),简称IV

这里使用到了初始化向量。为了避免ECB模式引入的问题,使用初始化向量来随机化明文,然后将这种随机化传递下去。

CFB模式

CFB(Cipher FeedBack)模式,即密文反馈模式。该模式首先将前一个密文分组进行加密,再与当前明文分组进行XOR运算,来生成密文分组。同样CFB模式也需要一个IV。

OFB模式

OFB(Output FeedBack)模式,即输出反馈模式。该模式会产生一个密钥流,即将密码算法的前一个输出值,做为当前密码算法的输入值。该输入值再与明文分组进行XOR运行,计算得出密文分组。该模式需要一个IV,进行加密后做为第一个分组的输入。

CTR模式

CTR(CounTeR)模式,即计数器模式。该模式也会产生一个密钥流,它通过递增一个计数器来产生连续的密钥流。对该计数器进行加密,再与明文分组进行XOR运算,计算得出密文分组。

密文反馈(CFB,Cipher feedback)模式可以将块密码变为自同步的流密码。

输出反馈模式(Output feedback, OFB)可以将块密码变成同步的流密码。

CTR模式也可以将块密码变成流密码。

之前见过,流秘密的特性是明文长度等于密文,我们可以测试一下 CFB 模式:

可以自行尝试一下,发现输出与输入确实是一样长的。

参考资料

https://zh.wikipedia.org/wiki/分组密码工作模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2103699.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

向 ADC 模型和 DAC 建模添加低通滤波器

与单音测试信号相比,双音测试信号可提供更多有关 ADC 性能的信息。您的作者的模型与特定 ADC 的制造商模型非常匹配,因此可以方便地运行误码率模拟。该 ADC 恰好具有非常宽的输入带宽。 对于带宽较低的 ADC,添加如图 1 所示的低通滤波器将提…

[SUCTF 2018]annonymous1

知识点&#xff1a; 匿名函数创建其实有自己的名字&#xff08;%00lambda_%d&#xff09; 进入页面开始代码审计. <?php // 使用 create_function 创建一个匿名函数&#xff0c;该函数调用 die() 函数并执行 cat flag.php 命令&#xff08;在服务器上执行&#xff0c;如果…

BFF层聚合查询服务异步改造及治理实践

首先感谢王晓老师的[ 接口优化的常见方案实战总结]一文总结&#xff0c;恰巧最近在对稳健理财BFF层聚合查询服务优化治理&#xff0c;针对文章内的串行改并行章节进行展开&#xff0c;分享下实践经验&#xff0c;主要涉及原同步改异步的过程、全异步化后衍生的问题以及治理方面…

实训day42(9.3)

⼀、编排分类 单机容器编排: docker-compose 容器集群编排: docker swarm、mesosmarathon、kubernetes 应⽤编排: ansible(模块&#xff0c;剧本&#xff0c;⻆⾊) ⼆、系统管理进化史 1. 传统部署时代 早期&#xff0c;各个组织是在物理服务器上运⾏应⽤程序。 由于⽆法限…

Mac搭建音视频开发环境

1.安装软件 打开终端&#xff0c;依次输入如下命令&#xff1a; brew install ffmpeg brew install qt brew install --cask qt-creator 2.配置qt 打开Qt Creator&#xff0c;在首选项—>Qt版本设置qt路径 3.设置默认Kits 3.创建项目 输入项目名称和存放目录&#xff0c…

在国产芯片上实现YOLOv5/v8图像AI识别-【4.2】RK3588获取USB摄像头图像推流RTSP更多内容见视频

本专栏主要是提供一种国产化图像识别的解决方案&#xff0c;专栏中实现了YOLOv5/v8在国产化芯片上的使用部署&#xff0c;并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。 B站配套视频&#xff1a;https://www.bilibili.com/video/BV1or421T74f 前言…

大屏适配各分辨率屏幕方案及整合动画性能

每个公司都不可避免会有一些数据可视化的需求&#xff0c;大数据时代&#xff0c;更是一发不可收拾&#xff0c;各种花里胡哨的大屏效果&#xff0c;让前端既烦恼又有些许刺激&#xff0c;刺激是新的挑战带来的&#xff0c;完成了各种风骚的展示效果&#xff0c;那种成就感让人…

荆州农商行资产质量下行压力不减,参股多家银行均有股权被冻结

撰稿|芋圆 2023年&#xff0c;湖北荆州农商行的业绩表现不佳&#xff0c;营收、利润双降。其中&#xff0c;2023年的营收6.8亿元&#xff0c;延续2022年的下滑趋势&#xff0c;同比降幅4.06%&#xff1b;利润总额2.2亿元&#xff0c;同比下滑15%&#xff1b;净利润1.8亿元&…

新疆火炬燃气安康杯知识竞赛活动策划方案

以赛促学&#xff0c;以学促安。为深入贯彻落实国家安全生产法律法规&#xff0c;增强公司员工的安全意识和法律素养&#xff0c;6月28日&#xff0c;新疆火炬燃气股份有限公司举办2024年安全生产法律法规“安康杯”知识竞赛。28支队提前抽好PK对手&#xff0c;两两PK&#xff…

Nginx 负载均衡+高可用 集群部署(Keepalived+LVS DR模式)

一、LVS负载均衡简介 1.1 LVS基本介绍 LVS&#xff08;Linux Virtual Server&#xff09;即Linux虚拟服务器&#xff0c;是由章文嵩博士主导开发的开源负载均衡项目&#xff0c;目前LVS已经被集成在Linux内核中。该项目在Linux内核中实现了基于IP地址的请求数据负载均衡调度方…

【C语言从不挂科到高绩点】09-作业练习-循环结构02

Hello!彦祖们,俺又回来了!!!,继续给大家分享 《C语言从不挂科到高绩点》课程,前面课程中给大家讲解了一些常规的知识点,那么本次课,我们一起来练习挑战一下!! 本套课程将会从0基础讲解C语言核心技术,适合人群: 大学中开设了C语言课程的同学想要专升本或者考研的同…

年薪98w!产品人的新赛道,我决定入局!

现在做产品经理&#xff0c;真的挺累的。 现在产品越来越难做&#xff0c;晋升困难&#xff0c;工资迟迟不涨……公司裁员&#xff0c;产品经理首当其冲&#xff01;&#xff01; 做产品几年了&#xff0c;还没升职&#xff0c;就先到了“职业天花板”。 想凭工作几年积累的…

提升编程效率的秘密武器:精选编程工具解析

引言 在软件开发的世界里&#xff0c;时间就是金钱。选择合适的编程工具不仅可以帮助开发者节省时间&#xff0c;还能提高代码质量&#xff0c;优化团队协作。本文将深入探讨几款能够显著提升工作效率的编程工具&#xff0c;并分析它们的特点、使用场景以及如何帮助开发者提高…

数字人直播阿凡达模式2.0版本揭秘:灰豚运用了哪些黑技术?

随着数字人直播的应用频率不断提升&#xff0c;其在帮助企业降本增效方面的潜力也随之显现&#xff0c;刺激市场需求的同时&#xff0c;也让用户对它的期待值持续增长。在此背景下数字人源码厂商开始不断加大研发力度&#xff0c;以推动数字人直播技术的持续升级&#xff0c;数…

青少年护眼台灯哪个牌子好?五款质量好又专业的护眼台灯

现在的青少年学习压力很大&#xff0c;在学校课程已经塞满了大半天&#xff0c;课后的作业更是不少&#xff0c;空闲时间还需要去课后补习班的数不胜数。用眼的次数非常的高&#xff0c;眼睛很容易感到疲惫&#xff0c;这时候我们一个“宝贝”大有作用&#xff0c;就是我们的护…

【书生3.3】LMDeploy 量化部署进阶实践

LMDeploy 量化部署进阶实践 1、环境准备1.1 创建模型软链接1.2 LMdeploy部署验证 2、api接口服务2.1 启动API服务器2.1.1 以命令行形式连接API服务器2.1.2 以Gradio网页形式连接API服务器 2.2 LMDeploy Lite2.2.1 不设置kv2.2.2 设置kv2.2.3 设置**在线** kv cache int4/int8 量…

深度学习与电网信号故障诊断:基于卷积神经网络和残差网络的应用

在本文中&#xff0c;我们将探讨如何使用深度学习方法&#xff0c;特别是卷积神经网络&#xff08;CNN&#xff09;和残差网络&#xff08;ResNet&#xff09;&#xff0c;来进行信号故障诊断。通过实践&#xff0c;我们将逐步演示如何加载数据、处理数据、建立模型并进行训练和…

axios设置responseType: ‘blob‘,获取接口返回的错误信息

在axios的请求中当后端接口返回的是文件流的情况下&#xff0c;我们需要在请求参数里面设置responseType: blob&#xff0c;如果接口报错&#xff0c;默认前端无法获取后端返回的错误信息。 解决方法&#xff1a;通过FileReader获取错误信息 async handleFetch() {const res aw…

59.以太网数据回环实验(2)硬件资源梳理及系统框图

硬件资源梳理介绍&#xff1a; 升腾开发板使用的以太网PHY芯片型号为RTL8211F&#xff0c;是低功耗10-BASE/100-BASE/1000-BASE全双工以太网PHY层芯片&#xff0c;支持 10Mbps、100Mbps 和 1000Mbps以太网通信。I/O 引脚电压可变&#xff0c;符合 IEEE802.3-2005 标准&#xff…

2024.09.04【读书笔记】|如何使用Tombo进行Nanopore Direct RNA-seq(DRS)分析

文章目录 Tombo快速使用介绍模型介绍RNA修饰分析步骤特异性替代碱基检测&#xff08;推荐&#xff09;De novo canonical model comparison ONT全长转录组分析步骤疑难解答Minimap2在比对nanopore直接RNA-seq数据时的最佳实践和参数设置有哪些&#xff1f;featureCounts在进行R…