基于Java的密文密码分析

基于Java的密文密码分析,java,cryptography,encryption,Java,Cryptography,Encryption,我在找一些关于作业的想法 我有7个密文文件,所有文件都使用相同的对称密钥进行加密,密钥长度为3个字符,字母顺序为。没有提供加密算法,但规范声明它是自制算法,并且幼稚(无论这意味着什么)。我的目标是解密这些文件。我只是想知道我可以对这些文件进行什么样的攻击 到目前为止,我已经做了频率分析,用蛮力攻击来检测Cesar密码,用Krasinsky的方法来检测Vigenere密码,用密文XOR来检测一个简单的流密码版本。我怀疑这些文件是用混合密码加密的 顺便说一句,解密的明文应该只包含一条普通消息,但密文

我在找一些关于作业的想法

我有7个密文文件,所有文件都使用相同的对称密钥进行加密,密钥长度为3个字符,字母顺序为。没有提供加密算法,但规范声明它是自制算法,并且幼稚(无论这意味着什么)。我的目标是解密这些文件。我只是想知道我可以对这些文件进行什么样的攻击

到目前为止,我已经做了频率分析,用蛮力攻击来检测Cesar密码,用Krasinsky的方法来检测Vigenere密码,用密文XOR来检测一个简单的流密码版本。我怀疑这些文件是用混合密码加密的

顺便说一句,解密的明文应该只包含一条普通消息,但密文显示使用了超过97个不同的ASCII符号

非常感谢任何一般性的帮助、想法或指导!老实说,我不希望解密这些文件,但那样的话,我还不如在你的帮助下证明我的教授是错的。谢谢

编辑


我正在寻找对块或流密码的攻击。至少这是我所怀疑的…

为什么不开始使用蛮力强制每个最流行的对称密钥算法的所有
26**3
可能性:


还有其他你能找到的。

现在,你说你已经做了统计分析。如果算法实际上是幼稚的,符号的频率将不会均匀分布。一些符号会更常见。是这样吗?如果是这样,我会从那里挖

我不妨证明我的教授 你的帮助有问题吗


有了“我们的帮助”,我们将证明你的教授是错的。

由于算法简单且自制,你可以尝试以下简单算法:

  • 每隔3个字符使用密码密钥重复XOR
  • 每隔2个或1个字符使用密码密钥重复XOR
  • XOR和旋转/移位:密钥与密文异或并旋转/移位

既然你知道纯文本是普通文本,那么就在密文的前几个字符中寻找模式,看看它们是否可以与密码键结合,得到字母/数字的ASCII码。

著名的Enigma机器使用3个字符的对称字母键。97个ASCII符号?ASCII从32到126运行,给出94个符号。\n和\r为96再添加两个标记,然后为97添加一个消息结束标记,如\0。换句话说,早期Engima机器(带有固定反射器)加密Windows风格文本数据的原始副本将与线索非常匹配

谜之机有一些已知的缺陷。如果你的教授非常和蔼可亲的话,他会复制德国海军早期使用的脆弱系统。这是用一次性密钥加密每条消息,然后允许解密在使用标准密钥加密的消息开始时传输一次性密钥两次。通过两次传输,他们为密码分析提供了额外的上下文

第二个众所周知的缺陷是角色从不映射到自身。因此,如果你有一个潜在的纯文本,没有字符会匹配


如果你知道转子和反射器是什么样子,你就有可能用蛮力破解谜团。不知道在这种情况下你有大约10^15种可能去探索。

@Elalfer你怎么会这样想?即使不太可能,尝试的可能性也相对较少,所以为什么不呢?@Daniel感谢您的输入!但我试图把目光从暴力转移到实际的密码学上。此外,由于加密是使用一些简单的算法完成的,我怀疑是否使用了twofish或rijndael。。相反,我在寻找流密码和分组密码的技术。@Daniel:请参阅Druv之前的评论。对任何一个密码进行暴力攻击都需要数年甚至数年的时间。所以这个家庭任务没有任何意义。@Elalfer实际上,暴力在这种情况下不会花费太多时间,因为我们知道键长(3个字母)。但是我不是在寻找蛮力。@elfer仅仅用一个3-alpha-char键的蛮力攻击不会永远对任何一个进行攻击——只是一个观察——但是著名的Enigma机器使用了3个字符对称的字母键。97个ASCII符号?ASCII从32到126运行,给出94个符号。\n和\r为96再添加两个标记,然后为97添加一个消息结束标记,如\0。换言之,早期Engima机器(带有固定反射器)加密Windows风格文本数据的天真副本将非常符合线索。@Simon哇!这是我听到的最准确的事情!到目前为止,你所说的一切都符合!我印象深刻!也许你可以写下来作为回答,我将欣然接受。作为附带请求,您知道攻击这种加密的任何技术吗?仅从示例文件进行反转是相当困难的。你不能使用它们反编译应用程序吗?谢谢你的帮助!不幸的是,我没有找到任何模式。在任何情况下,密文都有大约97个不同的符号。考虑到明文是用普通英语写的(有26个字母),你知道为什么吗?嗯,还有,如果你愿意的话,我可以在我的报告中特别提到:)@Dhruv:如果明文有大小写,那么它已经是52个字母了。添加空格、回车符和逗号。然后一个密码会将它们混合在一起,可能还会使用大于1的块大小在完整的ASCII指令集上分发。@Paulo啊,是的,这是一个尖锐的观察。