php小编西瓜为您介绍一种在GO语言中解密C#字符串的方法——AES-GSM。AES-GSM是一种高级加密标准,它结合了AES(高级加密标准)和GSM(全球系统移动通信)的优势。通过使用AES-GSM方法,我们可以有效地解密在GO中编码的C#字符串,从而实现数据的安全传输和保护。本文将详细介绍AES-GSM的原理和使用步骤,帮助读者轻松掌握这一加密解密技术。,我有一个在 go 中经过 aes-gcm 加密的字符串及其密码短语,并尝试在 c# 中对其进行解密。但是,我无法找到正确的方法来在 c# 中对其进行解密。
我收到的错误提到 iv 的大小,块的长度不适合 c# 解密算法。以下是 go 中的值:,go代码:https://go.dev/play/p/jn8ie61ntzw,这是go中的解密代码,这是go中的加密代码,我正在尝试在 c# 中复制相同的解密登录,因此它将能够解密并生成最终的字符串。,我在 c# 中尝试了几种解密逻辑,它们可以在这里找到:,https://dotnetfiddle.net/32sb5m 此函数使用 system.security.cryptography 命名空间,但会导致 iv 大小错误。,https://dotnetfiddle.net/wxkuyr 上述针对 .net 5 的修改版本会产生相同的结果,https://dotnetfiddle.net/6iftps 使用充气城堡库会导致“gcm 中的 mac 检查失败”错误,https://dotnetfiddle.net/8mjs3g 使用 rfc2898derivebytes 方法的另一种方法会产生错误,提示“计算的身份验证标记与输入身份验证标记不匹配”,当前使用的方法是否正确,或者是否有其他方法可以在 c# 中解密 aes-gcm?当涉及到 c# 时,可以采取什么措施来绕过这些错误?,您已经接近最后一个代码了。 go 将身份验证标签附加到生成的密文的末尾。您在这里正确提取它:,但是,您继续将具有实际加密文本+身份验证标记的数组视为仅包含加密文本。要修复,请将其也提取出来:,