我正在准备关于 Keccak 的演示文稿 ( http://keccak.noekeon.org/ )。
在那个演示文稿中,我想加密一个纯文本——这会带来以下问题:
- 填充函数的确切作用是什么(我们如何从 64 位获得 1600 位的立方体)?
- 加密文本后,我们如何再次解密呢?
我正在准备关于 Keccak 的演示文稿 ( http://keccak.noekeon.org/ )。
在那个演示文稿中,我想加密一个纯文本——这会带来以下问题:
您不能“解密” Keccak 的输出,因为它不是加密算法,而是单向哈希函数。相反,您使用它来验证哈希值确实是特定文本的哈希输出(您必须已经知道),只需计算文本的哈希,并将输出与第一个哈希值进行比较即可。
由于 Keccak 使用海绵结构,因此海绵功能需要填充。根据 permutation 的宽度r
,这里我猜你使用 1600 位,填充函数将 10*1 附加到输入文本以形成长度为r
. 这就是为什么您从 64 位文本中获得 1600 位的原因。
当您对文本消息应用 Keccak 算法时,您会得到一个“消息摘要”。Keccak 是 SHA3 的获胜者,其中 SHA 代表 Secure Hash Algorithm。你可以从它的名字看出 Keccak 是一个密码散列函数,它具有三个属性:
这些基本上意味着 Keccek 是一种单向函数,很难找到具有相同消息摘要的两条消息,反之亦然。第一点只是告诉您无法从消息摘要中恢复消息。