S-DES

  • 862 字

S-DES

简介

S-DES是一种简化版本的DES,用于教学目的。其通过置换、代换、密钥生成和简单的加密轮实现基本加密逻辑。

1734944786856.jpg

实现逻辑

1.密钥生成

  • 首先生成一个10位初始秘钥,分为左右两部分,各5位
  • 将左右两部分分别左移1位,得到两个新的5位秘钥
  • 将左右两个新的秘钥和为一个10位秘钥
  • 通过置换表得到$ K_1 $
  • 将左右两部分分别左移2位,得到两个新的5位秘钥
  • 将左右两个新的秘钥和为一个10位秘钥,并通过置换表生成$ K_2 $

    2.加密过程

  • 第一步
    • 将明文分块得到多个8位明文块,不足的部分用0补齐
    • 将明文块通过初始置换表得到$ IP $
    • 将$ IP $分为左右两部分,各4位
    • 将右部分通过扩展置换表得到8位
    • 将$ E(R) $和$ K_1 $异或得到8位
    • 将异或结果分为两部分,各4位
    • 将两部分分别通过S盒组合得到4位
    • 将S盒置换结果和左部分异或得到新的右部分
    • 将新的右部分作为左部分,与原来的右部分组合得到新的IP
  • 第二步
    • 交换左右两部分
    • 重复第一步
  • 第三步
    • 通过$ IP^{-1} $得到密文

解释一下S盒代换

假设:扩展异或后的输入为 10101100。
子密钥 𝐾1=10100100

  • 步骤 1:分组
    • 前4位:1010 -> 输入 S0。
    • 后4位:1100 -> 输入 S1。
  • 步骤 2:查表
    • S0 查表:
      • 行号:10(十进制 2),列号:01(十进制 1)。
      • S0 输出:10。
    • S1 查表:
      • 行号:11(十进制 3),列号:00(十进制 0)。
      • S1 输出:10。
  • 步骤 3:合并与置换
    • 合并 S0 和 S1 输出:1010。
    • 对 1010 应用 P4 置换([2, 4, 3, 1]):
    • 输入:1010。
    • 输出:0101。
  • 结果
    S盒代换的最终输出为 0101。

解密过程

  • 与加密过程相同,只是密钥的使用顺序相反,即先使用$ K_2 $再使用$ K_1 $

DES和S-DES中的 交换 过程即 Feistel 结构,保证了每一轮都可以影响最终加密的结果

打赏
打赏提示信息
分享
分享提示信息