首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Feistel网络中对较小块使用AES

在Feistel网络中对较小块使用AES
EN

Cryptography用户
提问于 2015-07-23 17:31:37
回答 1查看 266关注 0票数 2

我想知道在循环Feistel密码的情况下,FPE是如何解密的。我的理解是,只要通过具有反向密钥顺序的网络进行重复,就会生成在网络开始时输入的密文。

密文是某个数字的一个位表示,所以我只是在扩展数字,以便在停止之前搜索正确的长度。

然而,我的问题是,我使用AES作为我的圆函数。但是,我需要大量填充(0),因为AES块大小是128,而块大小(每一半)在10-30位时要小得多。我只是简单地将这些0附加到字符串的末尾,然后使用AES获得一个加密的128位输出。

在这一点上,我不太确定该做什么。我通过删除最后的~100位并只取字符串的开头来截断。然而,在我看来,这似乎是在丢失数据,我无法理解如何使用同样的方法解密。

这种简单的截断方法实际上是对较小块实现AES的正确方法,还是应该以另一种方式填充/截断?另外,如果它是正确的,有人能解释为什么它是或链接到一些相关的文献吗?

干杯!

我见过用AES从截断密文中恢复明文的相关链接,但我要么不理解这些评论,要么就没有发布解决方案。

EN

回答 1

Cryptography用户

回答已采纳

发布于 2015-07-23 19:05:39

在Feistel网络中,您可以使用任何函数,并且它是可逆的。当然,为了获得安全性,您需要函数来实现某些属性。使用Feistel网络的主要原因之一是得到伪随机排列。为此,您需要3或4轮具有伪随机函数的Feistel (每轮都有调整或独立键)。现在,截断AES是一个伪随机函数(也是一个非常有效的函数),所以这是一个好主意。您可以按您所说的使用零填充,但也必须将圆号添加到填充中(这是“调整”),或者在每一轮中使用不同的键。后一个选项的效率要低得多,因为您需要多次运行AES密钥调度。圆函数的使用在本质上保证了在每一轮中都有一个“计算独立的”伪随机函数(与在每一轮中使用不同的键基本相同)。

为了看它是否有效,只需绘制并跟踪解密。Feistel的神奇之处在于你不需要倒转圆函数就可以解密。

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/27108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档