2008-10-23 40 views
4

我在DBF表中有一些char()字段由项目中的过去的开发人员加密。知道明文,如何发现使用的加密方案?

但是,我知道解密几个记录的明文结果。我如何确定函数/算法/方案来解密原始数据? 这些都是一些样本字段:

对于cryptext:

b5 01 02 c1 e3 0d 0a 

明文应该是:

3543921 or 3.543.921 

而对于cryptext:

41 c3 c5 07 17 0d 0a 

明文应该是

1851154 or 1.851.154 

我相信0d 0a只是填充。从数据收集在赢得1252编码(不知道如果事项)

编辑:这是为了好奇和学习。我希望能够解开所使用的加密(似乎是一个简单的加密算法,虽然它是二进制数据),以恢复其明文我不知道的元组字段的值。

编辑2:添加了几个样本。

+0

密文的任何更多的例子 - 文本对? – Alexander 2008-10-23 22:19:59

+0

对不起,我其实没有更多:-( – 2008-10-24 03:16:17

回答

3

有在一般情况下,没有简单的方法。这个问题太笼统了。尝试发布这些普通+加密的字符串。

编辑:

  • 学习,你可以阅读这篇文章的目的:如果你真的beleive加密简单Cryptography on Wikipedia
  • - 检查它是否是一个字节(或字)级XOR - 见下面的伪代码

    for (i in originalString) { 
    newString[i] = originalString[i]^CRYPT_BYTE; 
    } 
    
+0

然后添加“挑战”标签,利用人群的智慧...假设它没有任何敏感,当然 – ine 2008-10-23 21:35:27

1

确定所使用的算法没有相应的键可能不完全有用。

如果文本足够小,并且有明文,为什么要蚂蚁弄明白?当然,除了好奇之外呢?

1

没有确定性的方法来说明,但通常在密文中有提示。它是否真的被加密(使用某种密钥)?或者它只是哈希和(可能)盐渍。

如果被哈希,你可能会很幸运,只是谷歌的匹配对(假设你有任何字典单词),因为有预先哈希的字典已经联机。

如果你有密文的例子,你可以将它张贴,有人可能认识的密码格式...

2

假设它不是一个替代密码一样简单的东西(尝试frequen cy分析)或施加较差的异或(例如,,重新使用密钥;尝试对已知明文的两个密文进行异或运算,然后查看结果是否是明文的异或;或者尝试将密文与本身偏移一定数量的字节进行异或运算),那么您应该假设它是众所周知的带有未知密钥(很可能由ASCII字符组成)的密码流。如果您有足够大的密文 - 明文对样本,则可以先检查具有相同前几个字符/字节的明文是否具有相同的第一个字符/字节的密文。你也可以看到它是一个块还是一个流密码,以及是否有任何反馈机制。如果存在填充,也可能表明它是分组密码而不是流密码。

2

根据你想投入多少努力,你应该能够到达某个地方。首先阅读cryptanalysis,特别是methods of cryptanalysis

,将决定这一任务将多么容易的事情是:

  • 有多好使用的加密方法;如果它是作为RSA或AES最近,备受推崇的方法,例如,你可能是出于运气
  • 你有多少密文和明文有 - 多多益善
  • 什么样的是数据 - 简单文本是最简单的,而随机数据是最难的数据是用同一个密钥加密的,还是使用了多个密钥。

成功的关键是不要灰心;密码分析的历史充满了被认为是不可破解的代码被破解的故事;也许最有名的是二战时期的Enigma机器,这种机器的破解促成了现代计算机的发展。

2

我们可以从您提供什么讲的几件事情:

  • 随着在每种情况下7个字节的密文的长度,这是不太可能的分组密码(因为分组密码在加密块时间,它们的长度将是块大小的倍数,并且56位的块大小不太可能*)。
  • 密文的长度和明文中的字符数在每种情况下都是相同的,所以它可以直接用数字流密码编码为ascii。
  • 将明文(ascii)和密文异或,既不会给每个重复的八位字节也不会有相同的密码流,所以它不是一个简单的密码。这也不是一个简单的使用相同密钥的流密码,除非某些密文字节是IV。
  • 最后两个字节在密文中相同,但在明文中不相同。这可能是巧合,但也可以表示填充,如你所建议的。如果它们是填充,则必须使用其他编码机制。

你知不知道所有的加密值是整数还是其他值也是可能的?

0

我认为XOR是一种容易解密的方案是一种误解。加密理论上最强的形式是一次性垫:简单,你用你的异或明文规定的比特串...

有限异或,在另一方面......

相关问题