Ich habe mithilfe eines Tools folgende Verschlüsselungs-/Kodierungs-Logik aufgebaut: https://gchq.github.io/CyberChef/#recip ... YWxsbzEyMw.
Diese Logik möchte ich in Python implementieren.
Ich habe dazu folgenden Code geschrieben, welcher der oben genannten Logik folgt.
Code: Alles auswählen
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, base, modes
from cryptography.hazmat.backends import default_backend
import base64
from cryptography.hazmat.primitives import padding
import Padding
message = 'hallo123hallo123'
# message = Padding.appendCMSPadding(message, blocksize=16)
message = message.encode("ascii")
# padder = padding.PKCS7(128).padder()
# message = padder.update(message)
# message += padder.finalize()
message = base64.b64encode(message)
print("Input Encoded: ", message)
key = bytes.fromhex('112233445566778899aabbccddeeff00')
iv = bytes.fromhex('00000000000000000000000000000000')
algorithm = algorithms.AES(key)
cipher = Cipher(algorithm, mode=modes.CBC(iv), backend=default_backend())
encryptor = cipher.encryptor()
ciphertext = encryptor.update(message) #+ encryptor.finalize()
b64_ciphertext = base64.b64encode(ciphertext)
print(b64_ciphertext)
print('Key: ', ''.join('{:02x}'.format(x) for x in key))
print('Input: ', ''.join('{:02x}'.format(x) for x in message))
print('Ciphertext: ', ''.join('{:02x}'.format(x) for x in b64_ciphertext))
print(b64_ciphertext)
Allerdings ist der Output VNR72whV/o0gcAR/G3J3Jw== zu kurz, bzw. ist nur ein Teil des erwarteten Outputs VNR72whV/o0gcAR/G3J3J8KT6UFrbBUCw1cO/EnNrPk=.
Die auskommentierten Padding Zeilen bringen zwar teilweise den Output auf die gewünschte Länge, der Inhalt verfälscht sich allerdings dadurch.
Der Output muss zwingend wie in der Logik beschrieben sein, da er später von einem anderen Programm verwendet wird.