python - 在 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 的库,它似乎可以提供帮助,但是我找不到任何关于如何使用它的好的文档。我能做些什么?
解决方案
推荐阅读
- python - Python 线程和 PySimpleGUI
- javascript - 如何在结帐总额的末尾添加一个零?
- export-to-csv - MS Access 导出规范(行和列分隔符)
- java - 如何多次循环各种条件
- javascript - NgbModal 对于 *一些* 模态窗口打开非常缓慢
- javascript - React 本机 setState 钩子重新打开模式
- pyqt - 如何从 Pyqt5 中的 QTextEdit 获取文本?
- javascript - 嵌套if三元条件javascript
- hyperledger-fabric - Hyperledger Fabric 使用最新配置加入对等节点
- azure-devops - 扩展 YAML 管道示例验证步骤