当前位置: 首页 > news >正文

加密算法入门:DES S盒输出计算方法

在数据加密标准(DES)中,S盒(Substitution box)是其核心的非线性部件之一,用于实现混淆(Confusion),这是克劳德·香农提出的两个基本操作之一,用以增加密码分析的难度。DES使用了8个S盒,每个处理6位输入,并产生4位输出。

以下是计算S盒输出的基本步骤:

  1. 输入选择
    每个S盒接收一个6位的输入值。这通常是从扩展置换(E-Box)得到的结果与密钥的一部分进行异或运算后的结果。

  2. 行选择
    输入的第1位和第6位用来确定S盒查找表中的行号。具体来说,如果输入的第一位是(b1),第六位是(b6),则行号为 (2 * b1 + b6)。

  3. 列选择
    输入的中间四位(即从第2位到第5位:(b2, b3, b4, b5)确定查找表中的列号。这四位二进制数直接转换成十进制数作为列号。

  4. 查找输出值
    根据上述得到的行号和列号,在S盒的矩阵中找到对应的值,该值是一个4位的二进制数,这就是S盒的输出。

例如,假设我们有一个S盒如下所示(这只是示例,实际的S盒表格更复杂):

  0 1 2 3
0 0 4 8 2
1 1 5 9 3
2 2 6 12 1
3 3 7 1 5

如果输入为 100101,那么:

  • 第一位 (b1=1) 和最后一位 (b6=1),行号为 (2* 1 + 1 = 3)。
  • 中间四位 0010 转换为十进制数为 (2),因此列为第 (2) 列。
  • 查找行 (3) 和列 (2),输出为 1(十进制为 (0001))。

因此,对于输入 100101,输出将是 0001

每个S盒都有自己的表格,而且这些表格在DES标准中有明确规定。在实际应用中,会根据具体算法提供的S盒表来进行查找。


http://www.mrgr.cn/news/58657.html

相关文章:

  • 【C++】C++11
  • 如何在 Ubuntu 18.04 上使用 Let‘s Encrypt 保护 Apache
  • SD-WAN企业组网的应用场景
  • Android:加载三方应用的小部件到自己APP显示
  • 【破解教程】DBeaver EE for Windows
  • appium 的工作原理
  • es实现桶聚合
  • OmniAI,OCR效果强的离谱,“牛马”必备
  • 01.01、判定字符是否唯一
  • essay
  • 算法的学习笔记—数组中只出现一次的数字(牛客JZ56)
  • 设计一个html+css+js的注册页,对于注册信息进行合法性检测
  • 03.04、化栈为队
  • ECharts图表图例知识点小结
  • 前端零基础入门到上班:【Day5】HTML 和 CSS
  • 前端零基础入门到上班:【Day3】从零开始构建网页骨架HTML
  • 【移动应用开发】界面设计(二)实现水果列表页面
  • 若依RuoYi-Vue 定时任务 速学
  • 2024mathorcup大数据竞赛B题【电商品类货量预测及品类分仓规划】思路详解
  • C++新增的类功能和可变参数模板
  • 一文带你彻底吃透GO的context到底是个啥?
  • 回顾复习1:
  • leetcode-75-颜色分类
  • 解读 Java 经典巨著《Effective Java》90条编程法则,第2条:遇到多个构造器参数时要考虑使用构建器
  • 使用js-enumerate报错Cannot set properties of undefined
  • 前端零基础入门到上班:【Day4】HTML 多媒体与表单深度教程