S-DES加密算法

本文介绍了S-DES加密算法的原理和步骤,包括初始置换、轮函数、S盒运算规则、轮秘钥生成以及加密解密过程。还讨论了S-DES的安全性问题,如密钥长度过短和线性结构,以及在Python中的实现。
摘要由CSDN通过智能技术生成

一、S-DES

S-DES 是一种简化版的数据加密标准。相对于 DES 来说,S-DES 更加简单、快速、高效,可以用于学习加密算法的入门课程。

二、加密和解密步骤

使用 S-DES 进行加密和解密的步骤如下:

  1. 初始置换(IP)
    • 将 8 位明文分为左右两部分,各 4 位,进行初始置换,得到置换后的左右两部分。
  2. 轮函数(F)
    • 对置换后的右半部分进行扩展置换(E-P),将其扩展为 8 位。
    • 将扩展后的结果与轮密钥 K1 进行异或运算,再将异或的结果拆分成 2 个 4 位的块。
    • 将这 2 个块分别通过 S 盒代替(S0 和 S1),然后再进行 P4 置换,最后将 P4 置换后的结果与左半部分进行异或,得到 F 函数输出的结果。

S盒运算规则(具体见案例):

  • 将第1和第4的输入比特做2—bit数,指示为S盒的一个行;

  • 将第2和第3的输入比特作为S盒的一个列;

  • 其中S0查表需要E-P和K的异或的结果的前4位,S1为后4位。

  • 如S1=1101 ,第1个数和第四个数代表要查的行,第2个数和第3个数代表要查的列,即11行(第3行),第10列(第2列),查询矩阵的结果是1,即01。

注意矩阵的起始行列都是第0行(列)

  1. 轮秘钥生成

    • 根据初始密钥生成 2 个 8 位的密钥(K1 和 K2)。
    • 首先对初始密钥进行 P10 置换,并将置换后的结果分为左右两部分,各 5 位。
    • 接下来对左右两部分进行循环左移,得到移位后的结果。
    • 最后将左右两部分合并,并进行 P8 置换,得到 K1。

    • 对 K1 进行循环左移,并进行 P8 置换,得到 K2。

.drawio.png

  1. 加密和解密
    • 将明文通过初始置换(IP)得到左右两部分。
    • 然后进行 2 轮加密/解密操作,每轮操作包括以下步骤:
      • 将右半部分作为输入,通过 F 函数得到输出。
      • 将 F 函数的输出与左半部分进行异或运算,得到新的右半部分。
      • 将原来的右半部分作为新的左半部分。
      • 如果是加密操作,则使用 K1 进行第一轮加密,使用 K2 进行第二轮加密;如果是解密操作,则使用 K2 进行第一轮解密,使用 K1 进行第二轮解密。
      • 将左右两部分交换,再进行一次初始置换逆置换 I P − 1 IP^{-1} IP1),得到密文或明文。

.drawio43d214c1053995fe.png

三、案例

  1. 密钥生成

问题描述:S-DES加密, 密匙 K = ( 10100 , 00010 ) , P 10 = ( 3 , 5 , 2 , 7 , 4 , 10 , 1 , 9 , 8 , 6 ) , P 8 = ( 6 , 3 , 7 , 4 , 8 , 5 , 10 , 9 ) 则 K 1 , k 2 密匙K=(10100,00010),P10=(3,5,2,7,4,10,1,9,8,6),P8=(6,3,7,4,8,5,10,9)则K1,k2 密匙K=(10100,00010),P10=(3,5,2,7,4,10,1,9,8,6),P8=(6,3,7,4,8,5,10,9)K1,k2分别为?

  1. 计算P10后的密匙

K ( P 10 ) K(P10) K(P10):10100 00010 (3,5,2,7,4 10,1,9,8,6)=10000 01100

  1. 计算 K 1 K1 K1

左四位、右四位 L S − 1 LS-1 LS1后合并:00001 11000

K 1 ( P 8 ) K1(P8) K1(P8):00001 11000 (6,3,7,4, 8,5,10,9)=1010 0100

  1. 计算 K 2 K2 K2

在已经 L S − 1 LS-1 LS1的基础上 L S − 2 LS-2 LS2: 00100 00011

K 2 ( P 8 ) K2(P8) K2(P8):00100 00011(6,3,7,4, 8,5,10,9)=0100 0011

  1. 进行S-DES加密

已知: 明文 P = ( 1011 , 0101 ) , I P = ( 2 , 6 , 3 , 1 , 4 , 8 , 5 , 7 ) , E − P = ( 4 , 1 , 2 , 3 , 2 , 3 , 4 , 1 ) , P 4 = ( 2 , 4 , 3 , 1 ) , I P − 1 = ( 4 , 1 , 3 , 5 , 7 , 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值