2014-02-26 35 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