Encryption 在使用GCM和OpenSSL解密之前对数据进行身份验证

Encryption 在使用GCM和OpenSSL解密之前对数据进行身份验证,encryption,openssl,aes,aes-gcm,Encryption,Openssl,Aes,Aes Gcm,我正在用AES-GCM解密一些数据。我有一些额外的认证数据(AAD)、认证标签和实际的加密数据 我需要能够做的是在实际解密之前对AAD和加密数据进行身份验证 我知道,如果数据验证失败,OpenSSL的EVP_DecryptFinal_ex函数将返回0,但似乎没有一种方法可以验证数据而不实际解密它 我需要这样做的原因是,我的加密数据可能非常大,因此我只想使用EVP\u DecryptUpdate一次对其进行解密。然而,这样做会提供一些数据,我不能确定这些数据是否真实 我需要能够对所有AAD和加密数

我正在用AES-GCM解密一些数据。我有一些额外的认证数据(AAD)、认证标签和实际的加密数据

我需要能够做的是在实际解密之前对AAD和加密数据进行身份验证

我知道,如果数据验证失败,OpenSSL的
EVP_DecryptFinal_ex
函数将返回0,但似乎没有一种方法可以验证数据而不实际解密它

我需要这样做的原因是,我的加密数据可能非常大,因此我只想使用
EVP\u DecryptUpdate
一次对其进行解密。然而,这样做会提供一些数据,我不能确定这些数据是否真实


我需要能够对所有AAD和加密数据进行身份验证,然后使用
EVP_DecryptUpdate
一次解密其中的部分。我可以一次解密所有数据以对其进行身份验证,尽管这会给我的应用程序增加额外的计算时间,我希望避免这种情况。

为了对任何内容进行身份验证,必须对GCM中的密文进行完整传递。您可以对明文进行分块加密,以便分别对其进行身份验证,或者您可以选择CBC模式,在密文的不同部分使用多个HMAC。这就是我要问的:如何在不需要解密的情况下对完整过程中的所有数据进行身份验证。为了对任何数据进行身份验证,必须对完整过程进行身份验证GCM中的密文。您可以对明文进行分块加密,以便对其进行单独身份验证,或者您可以选择CBC模式,在密文的不同部分使用多个HMAC。这就是我要问的:如何在不需要解密的情况下对整个过程中的所有数据进行身份验证。