2013-06-03 84 views
0

作爲概念驗證的一部分,我從第三方獲得了bas64編碼/三重DES(MODE_ECB)加密字符串。我寫了一個快速測試,知道解密的值應該是「testdata」,但似乎並不奏效。解密通過另一個源加密的3DES數據

我已經用pycrypto和pyDES嘗試過了,結果相同。難道我做錯了什麼。 decode('hex')是密鑰的正確方法嗎?

from Crypto.Cipher import DES3 
import base64 

class akamaiServicesTest(TestCase): 

def test_cipherDecode3DES(self): 
    key = "D41D8CD98F00B204E9800998ECF8427ECF34260089DE00EF".decode('hex') 
    encryptedString = base64.b64decode("QnRWdXFPeE8rRmJGOGVSWkhOMzFiN3l2Y01scU1QdXU=") 
    self.assertEqual(encryptedString, "BtVuqOxO+FbF8eRZHN31b7yvcMlqMPuu") 

    cipher = DES3.new(key, DES3.MODE_ECB) 
    decryptedString = cipher.decrypt(encryptedString) 
    self.assertEqual(decryptedString, "testdata") 

回答

2

關鍵是正確的,但密文似乎是Base64編碼的兩倍。解碼「BtVuq ...」字符串以獲得正確的密文。

使用PKCS#7填充在ECB模式下解密帶有3DES的密文,產生8個字節的二進制數據和8個字節的ASCII字符串「testdata」。這是你想要的?

+0

太棒了!雙base64編碼是什麼扔我。非常感謝。 –