Kha*_*ohd 0 encryption cryptography
是否存在可以接收 x 个字符长的明文并返回一个小于 x 个字符长的密文,但可以解密回原始明文的密码?如果密文的字母比明文的字母大得多怎么办?
不,这是不可能通过使用密码。
对于允许任何消息具有相等概率的通用密码,理论上——因此实际上——不可能以任何有意义的方式压缩消息。通常,无论如何执行任何类型的压缩都不是密码的功能,并且通常编写现代密码以对任何类型的二进制编码消息进行操作。
由于鸽巢原理,密文必须至少与明文一样多。否则一个密文会映射到多个明文,你无法决定哪一个是原始明文。
一般情况下,如果一个密钥被重复使用,甚至需要添加一个IV才能安全。如果不添加 IV 或其他唯一值,则重复的明文将生成相同的密文,将信息泄露给对手,因此通常甚至扩展密文。如今,我们还经常添加一个身份验证标签,这样对手就无法在未被发现的情况下更改密文。
如果重复的明文导致相同的密文对您的应用程序无关紧要,那么有相对复杂的技术可以让您“收支平衡”。这些技术称为格式保留加密或 FPE。如果您足够幸运,明文大小与块大小相同,那么您也可以使用任何块密码简单地执行单个块加密。
如果您想减少消息大小,那么您需要以某种方式压缩您的输入明文。例如,这可以通过对二进制或文本数据的通用压缩例程来执行。通常也可以在应用程序级别(枚举而不是字符串)或表示级别(二进制而不是文本)非常有效地重新编码消息。
最后,还有一个“密码压缩”,它是在安全的散列算法中执行的,例如 SHA-256。但是,SHA-256 是一种单向哈希函数,因此无法检索您的消息。散列用于在消息上创建唯一的指纹;它不像密码所期望的那样提供消息的机密性。