Encryption 是否有可能编写一个Enigma加密算法,可以使用所有字母数字作为输入,但不输出歧义字符?

Encryption 是否有可能编写一个Enigma加密算法,可以使用所有字母数字作为输入,但不输出歧义字符?,encryption,Encryption,这是关于Enigma加密,我猜转子的数量无关紧要,但我使用的是3 我正在使用的基本上是旧的机械谜式加密机的编码版本。这个概念相当古老,但在我深入学习它之前,我想知道是否有可能使用所有字符0-9 a-z和a-z进行加密,但加密文本本身将只是这些字符的子集?我试图替换加密输出中的一部分字符(总共10个左右),同时如果这些字符是输入的一部分,仍然能够返回到这些字符?您可以通过为不明确的符号添加1到2个字符的映射来消除歧义:O->A1;0->A2;其他模棱两可的符号;A->AA。这基本上就像字符串中的转

这是关于Enigma加密,我猜转子的数量无关紧要,但我使用的是3


我正在使用的基本上是旧的机械谜式加密机的编码版本。这个概念相当古老,但在我深入学习它之前,我想知道是否有可能使用所有字符0-9 a-z和a-z进行加密,但加密文本本身将只是这些字符的子集?我试图替换加密输出中的一部分字符(总共10个左右),同时如果这些字符是输入的一部分,仍然能够返回到这些字符?

您可以通过为不明确的符号添加1到2个字符的映射来消除歧义:O->A1;0->A2;其他模棱两可的符号;A->AA。这基本上就像字符串中的转义:我们通常不能在字符串中放入新行,所以我们将其表示为\n表示为\\

如果您使用的是加密数据(因此所有字符的概率都是均匀分布的,并且无法预测字符),则无法压缩密文。如果你能压缩它,那么你会注意到文本中的某种模式,并部分破坏了加密


如果你想减少密文的字母表,那么你必须增加密文的长度,否则你就成功地压缩了它。

是的,你描述的是一组由“键”生成的一对一映射。一般来说,当然是的:你总是可以创建一个多字符的结果值,有一个双射(1对1)与实际输入字符集的关系。最后都是数字,所以创建自己的表示并不难。。。。理论上;-)我不明白,如果我有61个输入字符,但限于51个输出字符,我怎么会有1到1的映射。这是一个多对一的问题,我不知道如何从中恢复过来。我考虑过Stefan的方法,但我不确定我对将已经很长的密钥长度加倍的看法。这仍然是可能的,您只需牺牲字符串长度,例如,10个字符的输入可能会加密到12个字符。否则,你不能从长度为61->51的字符集开始,保留相同的字符串长度。我现在就知道了,谢谢Luke、Stefan和Andrew!谢谢你的回答!这是我看到的一种方法。最后,我对另一个基址进行了一些二进制转换,并将输出减少到一组特定的大写字母。结果证明每个人都很喜欢它,所以我们坚持下去。在决定这样做1-2个字符映射方法之前,我意识到了你的最后一句话,但前几天我关掉了一个灯泡,以使编写代码变得更简单(最后文本的长度限制没有我想象的那么重要)。我选择它作为答案,因为我相信这是一个伟大的方法。