密码学入门——Feistel网络

本文介绍了Feistel网络,其由HorstFeistel设计,用于DES并影响其他密码算法。文章详细阐述了Feistel网络的工作原理、计算流程,包括轮函数、子密钥和加密/解密过程。此外,还提到AES候选算法中Feistel网络的应用及Rijndael的SPN结构区别。
摘要由CSDN通过智能技术生成

参考书

图解密码技术,第三版

一、引入

DES的基本结构是由Horst Feistel设计的,因此也被成为Feistel网络(Feistel结构,Feistel密码)。这一结构不仅被应用于DES,在其他密码算法中也有应用。

在Feistel网络中,加密的各个步骤被称为轮(round)。整个加密过程就是若干次轮的循环。

二、Feistel网络计算流程

Feistel网络计算流程如下

在这里插入图片描述
由于DES采用分组密码工作模式,每一块的大小为64字节。

上面的两个方框表示Feistel网络中一轮的输入(明文)。输人的数据被等分为左右两半分别进行处理。在图中,左半部分写作“左侧”,右半部分写作“右侧”。

下面的两个方框表示本轮的输出(密文)。输出的左半部分写作“加密后的左侧”,右半部分写作“右侧”。

中间的“子密钥”指的是本轮加密所使用的密钥。在Feistel网络中,每一轮都需要使用一个不同的子密钥。由于子密钥只在一轮中使用,它只是一个局部密钥,因此才称为子密钥。

轮函数的作用是根据“右侧”和子密钥生成对“左侧”加密的比特序列。轮函数的输出与“左侧”进行xor运算。

上述流程存在的问题是,右侧根本没有被加密,因此需要在每两轮处理中将左侧和右侧的数据对调。

下面是一个3轮的Feistel网络

在这里插入图片描述

三、Feistel网络的解密

在这里插入图片描述
Feistel网络只需要按照相反的顺序使用子密钥即可解密。

四、Feistel网络的性质

1.Feistel网络的轮数可以任意增加,无论进行多少轮的加密计算,都不会出现无法解密的情况。

2.加密时无论使用任何函数作为轮函数,都可以正确解密。

3.加密和解密可以使用完全相同的结构实现。

值得一提的是,AES候选的5个算法中,有3个算法(MARS,RC6和Twofish)都用到了Feistel网络。但AES最终选择的Rijndael却没有使用Feistel网络。Rijndael使用的是SPN结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值