首页 > 解决方案 > 在 C# 上使用 AES GCM 解密

问题描述

我正在尝试将 python 脚本转换为 C#。python脚本可以在这里找到:https ://0bin.net/paste/2Gh1CZMvClGWDuCg#C1ZCL6oVy8o1UD6deTD32HYhrPrxhA65xs0eba3zADU

我目前正在研究解密功能,它确实:

def decrypt_build_manifest(data: (bytes, bytearray)) -> str:
    size = len(data)
    with BytesIO(data) as bio:
        gcm_nonce = bio.read(0xC)
        bm_data_enc = bio.read(size - 0xC - 0x50)
        gcm_tag = bio.read(0x10)
        ed25519_sig = bio.read(0x40)

    try:
        cipher = AES.new(BUILD_MANIFEST_AES_KEY_STEAM, AES.MODE_GCM, nonce=gcm_nonce, mac_len=0x10)
        cipher.update(b"build-manifest")
        bm_data_dec = cipher.decrypt_and_verify(bm_data_enc, gcm_tag)
    except:
        cipher = AES.new(BUILD_MANIFEST_AES_KEY_BNET, AES.MODE_GCM, nonce=gcm_nonce, mac_len=0x10)
        cipher.update(b"build-manifest")
        bm_data_dec = cipher.decrypt_and_verify(bm_data_enc, gcm_tag)

    return bm_data_dec.decode("UTF8")

我找不到在 C# 上复制它的好方法。Microsoft 记录了一个 AES GCM 类,但它似乎不能满足我的要求。我还发现了一个名为 BouncyCastle 的库,它似乎可以提供帮助,但是我找不到任何关于如何使用它的好的文档。我能做些什么?

标签: pythonc#

解决方案


推荐阅读