[Python] Decrypt a value in Python that was encrypted using PHP openssl

Discussão em 'Python' iniciado por Stack, Abril 29, 2025.

  1. Stack

    Stack Membro Participativo

    I have a value that was encrypted using PHP openssl using cipher AES-CBC-256 but the passphrase for the final value was also encrypted using the same method. openssl_encrypt($key, $cipher, $passphrase, 0, $iv)

    I need to be able to unencrypt this data using Python but I'm running into block-size issues.

    Here's some of the code I have so far. I have tested decrypting this in PHP and it works properly. My final value in this example should be 'Jimmy'.

    import base64
    from Crypto.Cipher import AES
    from Crypto.Util.Padding import pad, unpad

    localKey = base64.b64decode('Po0KPxyF')
    localIv = base64.b64decode('s8W+/a4jkp9mhO3NkCL7Yg==')

    encrypted_value = base64.b64decode('hl5n6Nq5QYtgKIyLEVCupA==')
    encrypted_key = base64.b64decode('MGRHRFlaMzhCR0lxb2VHS1JHQXcrWkV2bkJpNWFZb3cybW9iQW5KYTlOU0xKK1FHc2pPUW1MUE9JRU5zTXN1Rg==')
    encrypted_iv = base64.b64decode('J31SrExr7KKIOertYIPhpQ==')

    # First need to encrypted key that uses the local key as the passphrase
    cipher_key = AES.new(pad(localKey,16), AES.MODE_CBC, localIv)
    decrypted_key = cipher_key.decrypt(encrypted_key)

    # Then decrypted the final value using the newly decrypted key
    cipher_key = AES.new(unpad(decrypted_key,16), AES.MODE_CBC, encrypted_iv)
    decrypted_value = cipher_key.decrypt(encrypted_value)

    Continue reading...

Compartilhe esta Página