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/NoPadding
,doFinal
方法在加密时会产生 ciphertext + tag
。解密 AES/GCM 模式时也是如此。
如果您 updateAAD
,MAC(标签)会更新,但 AAD 本身的值不包括在内(这甚至会破坏额外 AAD 的目的)。
您尝试使用 AAD 值是否有特定原因?
不确定您的经验水平或具体用例,但如果您有任何疑问,可以阅读我写的 blog 关于 AE 的文章。
有关于这个库和 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/NoPadding
,doFinal
方法在加密时会产生 ciphertext + tag
。解密 AES/GCM 模式时也是如此。
如果您 updateAAD
,MAC(标签)会更新,但 AAD 本身的值不包括在内(这甚至会破坏额外 AAD 的目的)。
您尝试使用 AAD 值是否有特定原因?
不确定您的经验水平或具体用例,但如果您有任何疑问,可以阅读我写的 blog 关于 AE 的文章。