2014-02-26 37 views
1

我有一些加密的文本(在ECB模式下用3DES加密而不加盐)。如何在ECB模式下解密3DES(使用单词表)?

我的问题:如何使用单词表解密他们? (或不呢?)

例子:

加密文本:

Xfi+h4Ir6l7zXCP+N4EPvQ== 

这个词表:

foo 
bar 
marketing 

原始文本得到加密前的是: “市场营销” (只是为了让示例完整)。

我试图与评论python脚本:

$ cat 3des.py 
#!/usr/local/bin/python 

from pyDes import * 

data = "marketing" 
k = des("DESCRYPT", CBC, "\0\0\0\0\0\0\0\0", pad=None, padmode=PAD_PKCS5) 
d = k.encrypt(data) 
print "Encrypted: %r" % d 
print "Decrypted: %r" % k.decrypt(d) 
assert k.decrypt(d, padmode=PAD_PKCS5) == data 

测试它:

$ python 3des.py 
Encrypted: '\xabd\xfc\x98x\x86\x8d\xb5A\xba\x8e\x12,\x1f\x83\xb5' 
Decrypted: 'marketing' 
$ 

一点点帮助吗?

+0

这应该不会太难。只需使用Python(谢谢@DallasMoore)遍历潜在密钥的文本文件。使用'for范围(y)'与'readlines'结合使用,不要将所有内容都添加到列表中。 – KnightOfNi

+0

我试过了,还没有运气,“imma没有程序员;)” – 2014-02-26 16:12:43

+0

你到底需要什么帮助? –

回答

0

如果你打算使用pyDES,你首先必须配置您的脚本中使用3DES ......这里是提供pyDES例如,修改为使用3DES:

from pyDes import * 

data = "marketing" 
k = triple_des("DESCRYPTDESCRYPT", ECB, "\0\0\0\0\0\0\0\0", pad=None, padmode=PAD_PKCS5) 
d = k.encrypt(data) 
print "Encrypted: %r" % d 
print "Decrypted: %r" % k.decrypt(d) 
assert k.decrypt(d, padmode=PAD_PKCS5) == data 

打破它下来...

以下行包含类的初始化信息:

k = triple_des("DESCRYPTDESCRYPT", ECB, "\0\0\0\0\0\0\0\0", pad=None, padmode=PAD_PKCS5) 

从文档中,PARAMS如下:

(key, [mode], [IV], [pad], [padmode]) 

key  -> Bytes containing the encryption key. 8 bytes for DES, 16 or 24 bytes 
     for Triple DES 
mode -> Optional argument for encryption type, can be either 
     pyDes.ECB (Electronic Code Book) or pyDes.CBC (Cypher Block Chaining) 
IV  -> Optional Initial Value bytes, must be supplied if using CBC mode. 
     Length must be 8 bytes. 
pad  -> Optional argument, set the pad character (PAD_NORMAL) to use during 
     all encrypt/decrpt operations done with this instance. 
padmode -> Optional argument, set the padding mode (PAD_NORMAL or PAD_PKCS5) 
     to use during all encrypt/decrpt operations done with this instance. 

所以,在我修改的例子中,我可以这样来配置的参数...

Key: DESCRYPTDESCRYPT 
Mode: ECB 
IV: "\0\0\0\0\0\0\0\0" 
pad: None 
padmode: PAD_PKCS5 

所以,从这里,你需要更改上面的“数据”变量你想解密的密文,然后将你的单词列表加载到一个数组中,设置一个循环以迭代数组中的值,通过'键'参数...

+0

我尝试了,但它仍然不好:https://pastee.org/dw7k7 – evachristine

+0

错误信息中的第8行 - ValueError(“无效的三重DES密钥大小,密钥必须是16或24字节长)”。您需要16或24字节的密钥长度。请记住,1个字符= 1个字节。 –

+0

嗯..能否请你提供一个有效的例子,对于我的问题? :P – evachristine