我正在为大学做一些密码学修订练习(为考试做准备),这个问题让我很困惑:
大多数分组密码实现将 S-box 视为查找表。DES 使用 8 个 S-box,每个 S-box 接收 6 位并输出 4 位。AES 只使用一个接收 8 位并输出 8 位的 S-box。每种情况需要多少存储空间?
我不知道?我不确定这个问题到底在问什么。我觉得我可能缺少一些关于存储和 s-box 的概念?
如果有人能对此有所了解,那就太好了!谢谢。
我正在为大学做一些密码学修订练习(为考试做准备),这个问题让我很困惑:
大多数分组密码实现将 S-box 视为查找表。DES 使用 8 个 S-box,每个 S-box 接收 6 位并输出 4 位。AES 只使用一个接收 8 位并输出 8 位的 S-box。每种情况需要多少存储空间?
我不知道?我不确定这个问题到底在问什么。我觉得我可能缺少一些关于存储和 s-box 的概念?
如果有人能对此有所了解,那就太好了!谢谢。
似乎有点奇怪的问题,但这是我认为我会如何处理它:
如果实现为查找表,它基本上只是一个数组,“查找”只是索引到数组中。
因此,数组元素的数量必须对应于输入可以采用的不同值的数量,例如,如果 S-box 输入是 8 位,则有 2 8 = 256 个可能的输入值。
数组元素本身的大小对应于输出位数。现在,我们通常不能定义元素小于 8 位(1 字节)的数组,但我们假设可以对输出进行编码,这样我们就可以构造一个没有“浪费”空间的数组(就像会发生的那样)如果我们必须在 8 位数组元素中存储一个 4 位值)。
考虑到这一点,我们应该能够按如下方式计算存储:
存储(以字节为单位)= S-box 的数量 x 2 输入位数x(输出位数 / 8)
所以:
DES = 8 x 2 6 x (4 / 8) = 256 字节
AES = 1 x 2 8 x (8 / 8) = 256 字节