1

概念実証の一環として、サードパーティから、bas64 でエンコードされたトリプル DES (MODE_ECB) で暗号化された文字列が提供されました。復号化された値が「testdata」であることを知って簡単なテストを書きましたが、うまくいかないようです。

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")
4

1 に答える 1

2

キーは正しいですが、暗号文は Base64 で 2 回エンコードされているようです。「BtVuq...」文字列もデコードして、正しい暗号文を取得します。

PKCS#7 パディングを使用して ECB モードで 3DES を使用して暗号文を復号化すると、8 バイトのバイナリ データと 8 バイトの ASCII 文字列「testdata」が生成されます。これはあなたが探しているものですか?

于 2013-06-03T06:21:48.127 に答える