2

我正在准备关于 Keccak 的演示文稿 ( http://keccak.noekeon.org/ )。

在那个演示文稿中,我想加密一个纯文本——这会带来以下问题:

  1. 填充函数的确切作用是什么(我们如何从 64 位获得 1600 位的立方体)?
  2. 加密文本后,我们如何再次解密呢?
4

2 回答 2

9

您不能“解密” Keccak 的输出,因为它不是加密算法,而是单向哈希函数。相反,您使用它来验证哈希值确实是特定文本的哈希输出(您必须已经知道),只需计算文本的哈希,并将输出与第一个哈希值进行比较即可。

于 2013-05-21T14:24:54.213 回答
4

由于 Keccak 使用海绵结构,因此海绵功能需要填充。根据 permutation 的宽度r,这里我猜你使用 1600 位,填充函数将 10*1 附加到输入文本以形成长度为r. 这就是为什么您从 64 位文本中获得 1600 位的原因。

当您对文本消息应用 Keccak 算法时,您会得到一个“消息摘要”。Keccak 是 SHA3 的获胜者,其中 SHA 代表 Secure Hash Algorithm。你可以从它的名字看出 Keccak 是一个密码散列函数,它具有三个属性:

  • 原像抗性
  • 第二原像电阻
  • 碰撞阻力

这些基本上意味着 Keccek 是一种单向函数,很难找到具有相同消息摘要的两条消息,反之亦然。第一点只是告诉您无法从消息摘要中恢复消息。

于 2013-05-22T04:13:38.257 回答