我在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
只是填充。是从win-1252编码收集的数据(dunno,如果重要)
编辑:这是为了好奇和学习。我希望能够解决所使用的加密(似乎是一个简单的加密,虽然是二进制数据)来恢复我不知道明文的元组的字段值。
编辑2:添加了几个样本。
答案 0 :(得分:3)
一般情况下没有简单的方法。这个问题太笼统了。尝试发布这些普通+加密字符串。
编辑:
如果您真的相信加密很简单 - 检查它是否为字节(或字)级XOR - 请参阅以下伪代码
for (i in originalString) {
newString[i] = originalString[i] ^ CRYPT_BYTE;
}
答案 1 :(得分:2)
假设它不像替换密码那样简单(尝试频率分析)或应用不良的XOR(例如,重用密钥;尝试对已知明文的两个密文进行异或,然后看看结果是否是明文的异或;或者尝试对密文进行异或,并将自身移动一些字节数),您应该假设它是一个众所周知的带有未知密钥的流/分组密码(很可能由ASCII字符组成)。如果你有足够大的密文 - 明文对样本,你可以先检查具有相同前几个字符/字节的明文是否具有相同的第一个字符/字节的密文。在那里你可能还会看到它是块还是流密码以及是否涉及任何反馈机制。填充(如果存在)也可能表明它是块密码而不是流密码。
答案 2 :(得分:2)
根据您想要投入多少努力,您应该能够到达某个地方。首先阅读cryptanalysis,特别是methods of cryptanalysis。
决定这项任务有多容易的事情是:
成功的关键是不要沮丧;密码分析的历史充满了所谓的牢不可破的代码被破解的故事;也许最着名的是来自第二次世界大战的Enigma机器,它的破解促成了现代计算机的发展。
答案 3 :(得分:2)
我们可以从您提供的内容中说出一些内容:
您知道所有加密值是否为整数,或者其他值是否也可能?
答案 4 :(得分:1)
确定没有相应密钥的算法可能并不完全有用。
如果文字足够小,并且你有明文,你为什么要弄明白呢?当然,除了好奇之外,还有什么呢?
答案 5 :(得分:1)
没有确定的方法可以说明,但密文中经常会有提示。它是否真的加密(带某种键)?或者它只是哈希和(可能)腌制。
如果它是哈希,你可以很幸运,只需谷歌一对匹配(假设你有任何词典单词),因为已经有预先散列的词典在线。
如果您有密文的示例,可以发布,有人可能会识别密码格式...
答案 6 :(得分:0)
我认为XOR是一种易于解密的方案,这是一种误解。理论上最强的加密形式是一次性填充:只是一串预定位,你用你的明文和... ...
另一方面,有限XOR ...