java 实现 GCM 对称加解密
时间: 2024-01-15 13:47:36 浏览: 84
获取对称密钥及对称加解密demo-java
5星 · 资源好评率100%
可以使用 Java Cryptography Architecture (JCA) 提供的 Java API 实现 GCM 对称加解密。
首先需要创建一个 Key 对象来指定加密算法和密钥,例如使用 AES 算法:
```
Key aesKey = new SecretKeySpec(keyBytes, "AES");
```
然后,创建一个 Cipher 对象来进行加密和解密操作:
```
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
```
设置 Cipher 对象的模式和初始化向量(IV):
```
cipher.init(Cipher.ENCRYPT_MODE, aesKey, new GCMParameterSpec(128, ivBytes));
```
然后,使用 `update` 方法传递要加密的数据,最后用 `doFinal` 方法返回加密后的数据:
```
byte[] encryptedData = cipher.doFinal(data);
```
解密操作与加密操作类似,只需要将 Cipher 对象的模式设置为 `Cipher.DECRYPT_MODE`,以及使用相同的 Key 和 IV 进行初始化,即可使用 `doFinal` 方法解密数据。
需要注意的是,GCM 模式需要使用一个 96 位的初始化向量(IV),并且加密和解密操作必须使用相同的 IV。IV 是随机生成的,可以使用 SecureRandom 类生成。
另外,GCM 模式还提供了一个额外的数据输入和认证标签(AAD),可以使用 Cipher 对象的 `updateAAD` 方法指定。AAD 对于身份验证和完整性检查非常重要。
阅读全文