javax.crypto库中AAD的GCM模式

javax.crypto库中AAD的GCM模式,java,cryptography,aes-gcm,Java,Cryptography,Aes Gcm,对该库和一般GCM有疑问 我知道GCM模式可以对数据进行加密和身份验证,或者只是对数据进行身份验证。使用javax库,如果我只想对消息进行身份验证,我可以执行以下操作: cipher.updateAAD(AAD) 我的问题是,当我计算 cipher.doFinal(缓冲区) 缓冲区变成了什么?它仅仅是密文块+GCM auth标记吗?或者AAD本身现在真的包含在缓冲区中了吗 从文件中我真的不清楚: 谢谢 如果您将使用AES/GCM/NoPadding,doFinal方法在加密时生成cipherte

对该库和一般GCM有疑问

我知道GCM模式可以对数据进行加密和身份验证,或者只是对数据进行身份验证。使用javax库,如果我只想对消息进行身份验证,我可以执行以下操作:

cipher.updateAAD(AAD)

我的问题是,当我计算

cipher.doFinal(缓冲区)

缓冲区变成了什么?它仅仅是密文块+GCM auth标记吗?或者AAD本身现在真的包含在缓冲区中了吗

从文件中我真的不清楚:


谢谢

如果您将使用
AES/GCM/NoPadding
doFinal
方法在加密时生成
ciphertext+标记。解密AES/GCM模式时,也会出现同样的情况


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

您尝试使用AAD值的具体原因是什么

不确定您的经验水平或具体用例,但如果您有任何疑问,我会在这里写一篇关于AE的文章。

如果您“只是”想要身份验证,我建议使用HMAC,而不是像GCM那样的经过身份验证的加密算法。