AES Entschlüsselung mit pycrypto
Als Selbststudium übung, die ich versuche zu lernen, wie einige der pycrypto-Bibliothek. Ich muss entschlüsselt die Geheimtext-Zeichenfolge in CBC_MODE mit AES. Ich, der Geheimtext, Schlüssel und IV sind alle gegeben. Hier ist der code, den ich geschrieben habe:
from Crypto.Cipher import AES
mode = AES.MODE_CBC
key = "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1"
ciphertext = "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1";
iv = ciphertext[:32]
ciphertext = ciphertext[32:]
decryptor = AES.new(key, mode, iv)
plaintext = decryptor.decrypt(ciphertext)
print plaintext
Wenn ich diesen starte, bekomme ich die folgende Fehlermeldung:
ValueError: IV muss 16 bytes lang
Weiß ich, dass die IV-string ist 32 hex-Zeichen, und daher 16 Byte. Ich denke, dass dies vielleicht ein Tippfehler problem, aber ich weiß nicht, wie man es richtig. Kann mir jemand helfen?
Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Zeichenfolgen enthalten, die nur hex-Zeichen, aber Sie sind immer noch plain-strings, so dass jeder Charakter zählt.
Damit Ihre IV-string ist 32 byte lange, wie Sie geschnitten es aus
ciphertext
.Ich vermute, du hast Recht und es ist unten eingeben. Versuchen Sie eine dieser:
iv = binascii.unhexlify(Geheimtext[:32])
oder
iv = lange(Geheimtext[:32], 16)
Dem computer sagen, Sie sind den Umgang mit hex. Es ist und behandeln Sie es als ein string.
iv = iv.decode('hex');