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

Encryption 是否可以生成长度小于纯文本的密码文本?,encryption,cryptography,block-cipher,Encryption,Cryptography,Block Cipher,我有一条150个字符的信息。 我想生成一个加密文本,其中包括我的消息,它应该少于30个字符。 是否可以使用任何技术或算法来实现这一点 不,使用密码是不可能的 对于允许任何消息具有相同概率的通用密码,理论上——因此实际上——不可能以任何有意义的方式压缩消息。一般来说,执行任何类型的压缩都不是密码的功能,而现代密码通常用于对任何类型的二进制编码消息进行操作 由于鸽子洞原理,密文必须至少和明文一样多。否则,一个密文将映射到多个明文,并且您无法确定哪一个将是原始明文 通常,如果重复使用密钥,甚至需要添加

我有一条150个字符的信息。 我想生成一个加密文本,其中包括我的消息,它应该少于30个字符。
是否可以使用任何技术或算法来实现这一点

不,使用密码是不可能的

对于允许任何消息具有相同概率的通用密码,理论上——因此实际上——不可能以任何有意义的方式压缩消息。一般来说,执行任何类型的压缩都不是密码的功能,而现代密码通常用于对任何类型的二进制编码消息进行操作

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

通常,如果重复使用密钥,甚至需要添加一个IV以确保安全。如果没有添加IV或其他唯一值,则重复的明文将生成相同的密文,将信息泄漏给对手,因此通常密文甚至会被扩展。如今,我们还经常添加身份验证标签,以便对手无法在未被发现的情况下更改密文

如果重复的明文导致相同的密文对您的应用程序不重要,那么有一些相对复杂的技术允许您“收支平衡”。这些技术称为格式保留加密或FPE。如果您足够幸运,明文大小与块大小相同,那么您也可以使用任何块密码执行单个块加密


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


最后,还有一个“加密压缩”,它是在安全哈希算法(如SHA-256)中执行的。但是,SHA-256是一个单向散列函数,因此无法检索消息。散列用于在消息上创建唯一的指纹;它不会像密码所期望的那样提供消息的机密性。

不,使用密码是不可能的

对于允许任何消息具有相同概率的通用密码,理论上——因此实际上——不可能以任何有意义的方式压缩消息。一般来说,执行任何类型的压缩都不是密码的功能,而现代密码通常用于对任何类型的二进制编码消息进行操作

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

通常,如果重复使用密钥,甚至需要添加一个IV以确保安全。如果没有添加IV或其他唯一值,则重复的明文将生成相同的密文,将信息泄漏给对手,因此通常密文甚至会被扩展。如今,我们还经常添加身份验证标签,以便对手无法在未被发现的情况下更改密文

如果重复的明文导致相同的密文对您的应用程序不重要,那么有一些相对复杂的技术允许您“收支平衡”。这些技术称为格式保留加密或FPE。如果您足够幸运,明文大小与块大小相同,那么您也可以使用任何块密码执行单个块加密


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


最后,还有一个“加密压缩”,它是在安全哈希算法(如SHA-256)中执行的。但是,SHA-256是一个单向散列函数,因此无法检索消息。散列用于在消息上创建唯一的指纹;它不能像密码所期望的那样提供消息的机密性。

如果没有假设(=对于一般情况),这是不可能的。参见压缩限制/归档原则。我投票结束这个问题,因为这是关于加密的,而不是编程。这种问题以前已经得到了回答。如果没有假设(一般情况下),这是不可能的。参见压缩限制/归档原则。我投票结束这个问题,因为这是关于加密的,而不是编程。这类问题以前已经被回答过了。感觉像是用一个非常容易理解的问题描述键入一个答案。我会将它保存在本地的文本文件中,所以可以随意删除。卡哈,如果你对这个问题一无所知,请在下面的评论中告诉我。如果你不介意的话,我会用你来校对:)这个解释很清楚。谢谢你,马丁!我想用一个非常容易理解的问题描述键入一个答案。我会将它保存在本地的文本文件中,所以可以随意删除。卡哈,如果你对这个问题一无所知,请在下面的评论中告诉我。如果你不介意的话,我会用你来校对:)这个解释很清楚。谢谢你,马丁!