如何将消息表示为1到n-1之间的整数?

时间:2014-11-30 07:53:17

标签: cryptography elgamal

我正在尝试实现简单的El-Gamal密码系统。

我无法理解如何将消息表示为1到n-1之间的整数。 我唯一想到的是:  如果n位长度为k,则在t |上划分输入消息m t< k位和每个位用作整数。

我认为这是错误的。

那么如何将消息表示为1到n-1之间的整数?

1 个答案:

答案 0 :(得分:1)

你可以这样做,这实际上相当于在分组密码中使用ECB mode,但是存在攻击。攻击者可能会重新排序密文的不同块,您可以毫无问题地对其进行解密,但收到的明文会在您不知情的情况下被破坏。这也可能为重放攻击敞开大门,因为这些块都是独立加密的。您需要某种经过身份验证的加密。

回到原来的问题。通常使用混合加密来解决这样的问题。像AES这样的分组密码用于使用随机密钥加密整个明文。该随机密钥又通过ElGamal加密,因为密钥小到足以表示为< k 位。

现在,根据分组密码的操作模式,这仍然具有可塑性。您可能需要将随机密钥旁边的密文/明文的哈希值作为完整性检查。或者以其他方式使用经过身份验证的操作模式(如GCM),并将结果标记添加到随机密钥旁边。这取决于 k ,这应该适合。

请注意,如果random key | hash/tag未达到 k ,则应使用某种填充。