我在我的android项目中使用AES GCM身份验证,它工作正常.但与openssl API生成标记相比,在验证标记时遇到一些问题.请在下面找到java代码:
SecretKeySpec skeySpec = new SecretKeySpec(key,"AES");
byte[] iv = generateRandomIV();
IvParameterSpec ivspec = new IvParameterSpec(iv);
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE,skeySpec,ivspec);
int outputLength = cipher.getOutputSize(data.length); // Prepare output buffer
byte[] output = new byte[outputLength];
int outputOffset = cipher.update(data,data.length,output,0);// Produce cipher text
outputOffset += cipher.doFinal(output,outputOffset);
我在iOS中使用openssl,并使用下面的代码生成身份验证标记
NSMutableData* tag = [NSMutableData dataWithLength:tagSize];
EVP_CIPHER_CTX_ctrl(&ctx,EVP_CTRL_GCM_GET_TAG,[tag length],[tag mutableBytes])
最佳答案
原文链接:https://www.f2er.com/android/431084.html