是否可以生成长度小于纯文本的密文?

时间:2018-12-22 11:15:54

标签: encryption cryptography block-cipher

我有一条消息,长度为150个字符。 我想生成一个包含我的消息的加密文本,并且该文本应少于30个字符。 可以使用任何技术或算法来做到这一点吗?

1 个答案:

答案 0 :(得分:3)

否,使用密码无法做到这一点。

对于允许任何消息具有相同概率的通用密码,理论上-因此实际上-不可能以任何有意义的方式压缩消息。通常,执行任何类型的压缩都不是密码的功能,通常,现代密码被编写为可在任何类型的二进制编码消息上运行。

由于信鸽原理,必须至少有与明文一样多的密文。否则,一个密文将映射到多个明文,并且无法确定哪一个将是原始明文。

通常,如果密钥被重用,甚至需要添加IV以确保安全。如果未添加IV或其他唯一值,则重复的纯文本将生成相同的密文,从而将信息泄露给对手,因此通常会进一步扩展密文。如今,我们还经常添加身份验证标签,以使对手无法更改未被检测到的密文。

如果对于您的应用程序而言,重复的明文产生相同的密文并不重要,则可以使用相对复杂的技术来“收支平衡”。这些技术称为格式保留加密或FPE。如果您很幸运明文大小与块大小相同,那么您也可以使用任何块密码简单地执行一次块加密。


如果要减小消息大小,则需要以某种方式压缩输入的纯文本。例如,这可以通过通用压缩例程对二进制或文本数据执行。通常,也可以非常有效地在应用程序级别(枚举而不是字符串)或表示级别(二进制而不是文本)对消息进行重新编码。

最后,还有一种“密码压缩”,它是在诸如SHA-256之类的安全哈希算法中执行的。但是,SHA-256是单向哈希函数,因此无法检索您的消息。散列用于在邮件上创建唯一的指纹;它没有提供密码所希望的机密