javax.crypto 库中 AAD 的 GCM 模式

GCM mode for AAD in javax.crypto library

有关于这个库和 GCM 的一般问题。

我了解 GCM 模式既可以对数据进行加密又可以对数据进行身份验证,或者仅对数据进行身份验证。使用 javax 库,如果我只想对消息进行身份验证,我可以这样做:

cipher.updateAAD(AAD)

我的问题是,当我计算

cipher.doFinal(buffer)

缓冲区变成了什么?仅仅是密文块+ GCM auth标签吗?或者 AAD 本身现在实际上包含在缓冲区中了吗?

我真的不清楚文档:https://docs.oracle.com/javase/7/docs/api/javax/crypto/Cipher.html

谢谢!

如果您将使用 AES/GCM/NoPaddingdoFinal 方法在加密时会产生 ciphertext + tag。解密 AES/GCM 模式时也是如此。

如果您 updateAAD,MAC(标签)会更新,但 AAD 本身的值不包括在内(这甚至会破坏额外 AAD 的目的)。

您尝试使用 AAD 值是否有特定原因?

不确定您的经验水平或具体用例,但如果您有任何疑问,可以阅读我写的 blog 关于 AE 的文章。