c# - AES-GCM:#C Microsoft 类附加验证数据“(AAD)”

标签 c# encryption ssh aes-gcm

我正在尝试实现 AES-GCM 加密,但是什么时候

cipher.Encrypt(_iv, toEncrypt, cipherText, tag, associatedData);

我意识到我还需要实现关联的数据,这是一个 byte[] 数据类型,任何人都知道 AAD 部分应该来自哪里?

最佳答案

由于您正在尝试实现 AES-GCM 加密,我假设您已经知道 AES-GCM 加密的两个主要部分是:

  • 使用计数器操作模式的变体来保证输入数据的 secret 性。在您的情况下,AES 被用作底层分组密码。
  • 使用 GHASH 算法验证 secret 数据的真实性。

这意味着需要使用计数器模式的变体对明文 (toEncrypt) 进行加密,并根据生成的密文 (cipherText) 计算身份验证标记。

附加身份验证数据 (AAD) 保护明文的 secret 性而不对其进行加密,通常 AAD 意味着少量数据,例如版本号、地址和端口。

所以你只需要在AAD(关联数据)上应用GHASH算法,并将加密操作的输出标签值分配给GHASH算法的输入标签即可。请注意,这假设函数使用的方案是加密输入数据,然后对 AAD 进行哈希处理,如果顺序相反,则必须将 AAD 的 GHASH 函数的输出标记分配给要加密的数据的 GHASH 函数的输入标记。

关于c# - AES-GCM:#C Microsoft 类附加验证数据“(AAD)”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66283868/

相关文章:

asp.net - Web 服务开发从哪里开始?

java - 如何在不使用无尽的 else if 的情况下实现它

git - 安装gitosis后无法SSH到主机

github - 考虑将 SSH 公钥存储在 Github 存储库中吗?

c# - 如何避免 RCW 清理上的竞争

c# - Unity C# TouchScript - 将对象移动到 Flick 的方向

c# - foreach 集合被修改;枚举操作可能无法执行

Java HttpURLConnection 使用弱密码连接

c# - Linq 到 SQL : Populating an extended generated class in a Linq Query

authentication - 使用私钥进行JSch身份验证取消