1

我遇到了以下任务:

实现 4 位 OFB TEA 算法

我不完全理解。

据我了解 TEA 算法,它一次加密/解密 64 位。它有一个变体,称为“Block TEA”,它允许多个块或字,但仍使用 64 位块大小(我可能错了)。所以我对 nOFB 如何与 TEA 一起加密任何文本数据感到困惑。

我一直在关注 wikipedia 提供的 TEA 的实现,链接 - TEA Encryption。还有这个 - TEA Variants pdf。我仍然不知道如何将 OFB 或 nOFB 和 TEA 结合起来。

我所需要的只是一些指南或文本或参考资料或想法,可以详细解释上述任务。我可以自己实现。

4

1 回答 1

1

首先,当你不明白作业时,请询问你的导师!如果导师没有回答,那么您可能错过了一些重要信息。四处打听,如果找不到任何东西,请再次询问。如果仍然没有答案,则将问题上报给顾问。

您可能被要求做的是实现一个玩具密码。这样的玩具密码完全实现了诸如 TEA 之类的密码原语,但是它会将所有内容缩小到人类的比例,因此更容易理解和 - 当然 - 调试。因此,可以使用小型版本的 AES 和 DES 来了解算法和算法实现。

对于 TEA,有Demitasse - 一个关于茶(或咖啡)的文字游戏,装在一个小杯子里,geddit?这也被其原始名称称为简化 TEA。该密码在内部使用 4 位字长,这正是您的作业似乎需要的。当然,这种密码既不安全,也不兼容 TEA 或 XTEA 的完整版本。

至于 OFB,好吧,OFB 是输出反馈模式,在 Wikipedia 上很容易找到。唯一的问题是需要哪种反馈大小。默认情况下,我会让自己轻松实现完整的块输出(nOFB,换句话说,使用 Demitasse / Simplified TEA 的完整 16 位输出),如果有时间的话,留下 8 位 OFB 作为可能的选项。TEA 本身一个分组密码,因此如果您使用 OFB 对其进行配置,它会将自身变成一个完整密码,为(几乎)任何大小或内容的二进制消息提供机密性。

原则上,可以使用正常的 TEA 算法以 4 位的输出大小执行 OFB。您只需在内部移动 4 位并输出 4 位。当然,计算机非常基于字节,所以这有点奇怪。此外,您需要每四位加密一个块,这不会真正提高性能(但是,由于 TEA 和 CPU 的速度非常快,这取决于这是否是一个问题)。

于 2019-05-07T15:10:17.667 回答