news 2026/2/7 22:52:12

信息安全篇---DES算法的置换

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
信息安全篇---DES算法的置换

我们用最直观的比喻来解释DES中的置换,保证初学者也能秒懂!


一句话比喻

置换,就是老师给全班同学“换座位”。

  • 学生= 数据的每一个二进制位(0或1)

  • 座位表= 固定的置换规则(老师手里的名单)

  • 换座位= 把每一位数据按照规则移动到新位置


为什么需要“换座位”?

为了“混淆”和“扩散”

  • 混淆:打乱原始数据的顺序,让敌人看不出规律。

  • 扩散:让原始数据中一个微小的改变(比如改一个比特),通过多次置换扩散到整个加密结果中,产生“雪崩效应”。


DES中主要的“换座位”类型(三种)

1. 初始置换 / 最终置换

比喻:上课铃响,全班先按“身高表”坐好;下课铃响,再按“学号表”坐回来。

  • 初始置换

    • 时机:加密一开始。

    • 作用:只是个热身。把输入的64位明文,按照一张固定的“身高座位表”重新排一下。

    • 关键:它不增加任何安全性,只是让数据更符合DES芯片的硬件处理习惯(历史原因)。就像比赛前的热身运动。

  • 最终置换

    • 时机:加密结束后。

    • 作用:它就是初始置换的“逆操作”。按照“学号座位表”把大家再换回来,恢复成正常的顺序输出。

    • 为什么:为了和初始置换配对,让整个流程规整。

小结:这一对置换就是“仪式性”的进场和退场,不参与真正的加密战斗。


2. 扩展置换

比喻:体育课上,老师让一列15个同学报数,然后规定“单数的同学原地不动,双数的同学向前一步插入队伍”,变成一列23个同学。

  • 时机:在每一轮加密的F函数最开始。

  • 输入:32位数据(右半部分)。

  • 输出:48位数据。

  • 核心操作

    1. 重复某些位:把原来的32位数据,有选择地复制一些位,扩展到48位。

    2. 重新排列:复制的同时,也打乱顺序。

  • 目的

    1. 为了“配对联姻”:要把32位数据拿去和48位的子密钥进行混合(异或运算),位数必须相同(48位)。

    2. 为了扩散:通过复制和重新排列,让一个输入位能影响后续S盒中的多个计算,增强“雪崩效应”。


3. P盒置换

比喻:玩完“套圈游戏”后(S盒),老师让8个获胜小组,按照一张“领奖台地图”重新排队领奖。

  • 时机:在每一轮加密的F函数的最后一步。

  • 输入:S盒输出的32位数据。

  • 输出:仍然是32位数据,但顺序变了。

  • 核心操作:一个纯粹的重新排列。第1位去哪,第2位去哪...都有一张固定的“领奖台地图”规定好。

  • 目的

    1. 强化扩散:这是扩散的关键一步!S盒的“混淆”效果是局部的(每个S盒只处理6位输入)。P盒把8个S盒的输出结果彻底搅拌在一起,让S盒的局部混淆效果扩散到整个32位数据块中。

    2. 准备下一轮:这32位输出接下来要拿去和左半部分进行异或,搅拌得越均匀,下一轮加密的效果越好。


图解:一轮F函数中的置换流程

让我们看数据在一轮中是如何被“折腾”的(以右半部分R为例):

右半部分R (32位) | V [ 扩展置换 E ] <-- 15人变23人排队 | V 扩展后的数据 (48位) + 子密钥K (48位) <-- 开始配对联姻(异或) | V 混合结果 (48位) | V [ 8个S盒替换 ] <-- 核心加密步骤(非线性替换) | V S盒输出 (32位) | V [ P盒置换 ] <-- 按地图领奖,彻底搅拌 | V F函数的最终输出 (32位) --> 去和左半部分进行异或

技术总结与记忆口诀

置换类型发生位置输入位数输出位数核心作用初学者记忆口诀
初始/最终置换加密开始/结束64位64位仪式热身,无安全性“进场退场,打个照面”
扩展置换每轮F函数开头32位48位配对联姻,实现扩散“扩军备战,好配钥匙”
P盒置换每轮F函数结尾32位32位强力搅拌,核心扩散“颁奖搅拌,影响全局”

终极理解
你可以把DES的置换看作一个流水线工厂

  1. 扩展置换送料工,把零件(数据)整理好,送到加工台。

  2. S盒核心加工机床,进行最复杂的变形(非线性变换)。

  3. P盒置换传送带振动器,把加工完的零件使劲晃匀,让下一个工位能处理得更好。

  4. 初始/最终置换工厂大门,只管进出,不管生产。

这样拆解后,是不是觉得DES的“换座位”游戏一点也不神秘了?它们共同的目的,就是让数据经过16轮后,变得面目全非,无法追踪!

框图详细解说:跟着数据走一遍

让我们跟着一个数据位,看看它在DES加密过程中经历了哪些“置换”(换座位)的折腾:

第一站:进场热身(阶段一)

你的原始数据(64位明文)刚一进门,就被要求做一次“初始置换(IP)”

  • 作用:就像一个固定的热身操,按照一张古老的“座位表”重新排一下位置。

  • 关键它不提供安全性,只是一个历史遗留的格式处理步骤。对应的最终置换(IP⁻¹)在全部工作结束后,把它再换回来。

第二站:进入核心车间——单轮F函数(阶段二)

数据被分成左右两半后,右半部分进入当轮的F函数,这里才是置换发挥安全作用的主战场。

第一步:扩展置换(E盒)

  • 场景:你的右半部分数据(32位)来到一个“扩编站”。

  • 操作:这里的规则不是简单换座位,而是“复制并打乱”。比如,让第32位坐到第1位旁边,把第1位复制到第48位的位置等。

  • 目的

    1. 凑人数:把自己从32位“扩编”成48位,这样才能和48位的子密钥进行混合运算。

    2. 搞联系:通过巧妙的复制和排列,让原来的一个位能影响到后续S盒中的多个计算,为“扩散”打下基础。

第二步:S盒(替换,不是置换但至关重要)

  • 与子密钥混合后的48位数据,会进入8个S盒。这不是置换,而是DES安全的核心!可以把它想象成“魔法变形机”:每个S盒吃进6位,吐出一个完全不同的4位。这是产生“混乱”的最关键步骤。

第三步:P盒置换(P)

  • 场景:从8个S盒出来的32位数据,来到了“搅拌中心”。

  • 操作:这是一次纯粹的、彻底的重新排列。根据一张固定的地图,把32个位全部打散重排。

  • 目的

    1. 强力扩散:把上一个S盒产生的局部混乱,迅速扩散到整个32位数据块中。如果没有这一步,S盒的效果就是孤立的。

    2. 为下一轮准备:经过这样彻底的搅拌,输出的数据再拿去和左半部分结合,就能把混乱效果带入下一轮,像雪球一样越滚越大。

总结与比喻

可以把这三个核心的安全置换/操作想象成一个厨师做一道复杂的调味料(F函数输出)

  1. 扩展置换(E)准备食材。把主料(右半数据)切好、分份,方便下锅。

  2. 与密钥混合 + S盒大火爆炒。加入独家酱料(密钥)并用高温(S盒的非线性变换)让食材发生质变,这是产生风味(混乱)的关键。

  3. P盒置换(P)颠勺搅拌。让锅里的每一处味道都均匀混合,确保每一口都能吃到所有调料的味道(扩散)。

而初始/最终置换(IP/IP⁻¹),就像是厨师在开火前把锅摆正,关火后把菜装盘——是必要的流程,但不是烹饪技术的核心。

这个流程在每一轮加密中都会发生,重复16次。每一次的“切菜、爆炒、颠勺”都让原始数据变得更加面目全非,最终得到无法识别的密文。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/8 0:09:36

Qwen3-32B-MLX:6bit量化模型如何玩转双模式推理?

Qwen3-32B-MLX&#xff1a;6bit量化模型如何玩转双模式推理&#xff1f; 【免费下载链接】Qwen3-32B-MLX-6bit 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3-32B-MLX-6bit 导语&#xff1a;阿里达摩院最新发布的Qwen3-32B-MLX-6bit模型&#xff0c;通过6bi…

作者头像 李华
网站建设 2026/2/4 12:43:56

GitHub Actions自动化测试Miniconda-PyTorch流程

GitHub Actions自动化测试Miniconda-PyTorch流程 在AI项目开发中&#xff0c;最令人头疼的场景之一莫过于&#xff1a;“本地运行完美&#xff0c;CI却红了。”更糟糕的是&#xff0c;错误信息指向某个依赖版本不兼容——而这个库明明昨天还能用。这种“在我机器上能跑”的困境…

作者头像 李华
网站建设 2026/2/7 18:14:56

嵌入式工控机调试必备:STLink驱动安装新手教程

从零搞定STLink调试&#xff1a;新手也能一次成功的驱动安装实战指南 你是不是也遇到过这样的场景&#xff1f;刚拿到一块STM32工控板&#xff0c;兴冲冲地插上STLink调试器&#xff0c;结果设备管理器里只显示“未知设备”&#xff1b;或者IDE提示“找不到ST-Link”&#xff…

作者头像 李华
网站建设 2026/2/6 17:53:12

Miniconda-Python3.11安装torchaudio语音处理库

Miniconda-Python3.11 安装 torchaudio 语音处理库 在构建现代语音识别系统时&#xff0c;一个常见却令人头疼的问题是&#xff1a;为什么同样的代码在同事的机器上跑得好好的&#xff0c;到了自己环境里就报错&#xff1f;依赖冲突、版本不匹配、缺少底层编译支持……这些问题…

作者头像 李华
网站建设 2026/2/8 8:07:40

Markdown笔记记录:Miniconda搭建PyTorch全过程

Miniconda 搭建 PyTorch 全过程&#xff1a;从环境隔离到高效开发 在深度学习项目中&#xff0c;最让人头疼的往往不是模型调参&#xff0c;而是“在我机器上明明能跑”的环境问题。你有没有遇到过这样的场景&#xff1a;刚克隆一个开源项目&#xff0c;pip install -r require…

作者头像 李华
网站建设 2026/2/8 5:04:34

OBS Composite Blur:解锁专业级视频模糊特效的完整指南

OBS Composite Blur&#xff1a;解锁专业级视频模糊特效的完整指南 【免费下载链接】obs-composite-blur A comprehensive blur plugin for OBS that provides several different blur algorithms, and proper compositing. 项目地址: https://gitcode.com/gh_mirrors/ob/obs…

作者头像 李华