有一天我想到了这一点,我想知道是否有以下算法的名称(我不确定“密码”是否是正确的词):
例如,"Hello“变成了"CgZcG HcFHs”。
是否有此方法的名称,或类似的算法?算法的其他例子不是单个字母本身,而是2+字母之间的数学运算?
发布于 2021-01-12 23:11:48
您所描述的非常类似于自密钥密码,1586年由Blaise de Vigenère首次描述。您的方案与使用单字母密钥的标准自动密钥密码的不同之处在于:
现在,移动第一个密文字母对加密方案并没有太大的影响,因为这是一个很容易可逆的操作,而切换加密和解密操作对这个特定的密码也没有太大的影响。
但是,正如所指出的使用明文的最后一个字母作为密钥字母会给您的加密方案带来歧义,因此,除非您已经知道明文的至少一个字母,否则无法对密文进行明确的解密。这可以用两种方式来解释:
当然,在实践中,这种模糊性对密码的安全性没有多大影响。只要知道加密方法(应该假设,每一个克尔霍夫原理),您的方案就像普通的单字母自动密钥一样容易被破坏,只需尝试所有26个可能的密钥,并查看哪一个密钥生成看起来最可信的明文。
此外,即使一个人不知道加密方法,而且只有一段密文,单字母自动密钥及其变体无疑是一个中等技能的密码分析人员应该尝试的东西--至少在排除简单的凯撒替换和基于频率分析的普通转位密码之后,以及在一个巧合指数或其他类似测试之后,无法揭示任何可能显示更长密钥的周期性。因此,虽然您的方案可以使一个稍微有趣的密码谜题,即使是这样的谜题,它实际上并不比任何其他基本的单字母自动键变体更难打破。
发布于 2021-01-12 21:53:59
这个答案正在@mentallurg的评论上扩展。
密码的一个重要特性是你可以解密。更确切地说,有一种算法接收密码文本和私钥,并生成正确的明文。(您的方案没有密钥,这是一个单独的问题,称它为密码)。
因此,让我们拿你的密文"CgZcG HcFHs“,并尝试解密它。
C = 3
g = -7
Z = 0
c = -3
G = 7
H = 8
c = -3
F = 6
H = 8
s = -19所以我知道第一个字母和第二个字母之间的距离是3,但我不知道第一个字母实际上是什么。如果我知道第一个字母,那么剩下的将是唯一的决定。如果你的字母表是阿-扎-Z,那么就有52个不同的明文会产生这个密文,而解密算法无法知道52个明文中的哪个是预期的明文。
发布于 2021-01-12 18:36:40
注:现代密码学几乎没有任何“字母”的概念。位、位串(位序列)、字节(8位)、字节串(字节序列)、整数和多项式是最常见的操作对象。"ω“是一个字母。"א“是一个字母。"“是一个扩展的字素集群,它是Unicode的名称,指的是人们认为任何一个字符,也就是一个字母。"!“不是字母,而是英文字母。这些都不是英文字母。
正如DannyNiu所提到的,方案是一个在整数模26上以CBC模式工作的未键函数。它没有密钥,所以我不称它为密码,它只是一种编码。
你的问题的最后一个有趣的部分是:“还有哪些算法的例子不是单个字母本身,而是2+字母之间的数学运算?”
块密码器对固定大小的数据块(通常是位字符串或字节串)进行操作.例如,流行的AES分组密码一次对128位的块进行操作。如果这些块恰好包含Unicode编码的英文字母,那么它一次使用16个字母,因为每个字母需要8位。
许多散列函数都有它们所操作的内部块大小或容量,它们以块的形式接收数据(≤),并将其扩展到等于该大小(如果较低的话)。
一些流行的流密码器在内部一个大于一个字节的固定大小的数据块上工作,尽管它们的输出流仍然一次只使用一位。例如ChaCha有一个512位的内部块.
https://crypto.stackexchange.com/questions/87475
复制相似问题