【发布时间】:2021-11-23 16:08:18
【问题描述】:
我正在尝试在 Java 代码中使用 AES/GCM/NoPadding 进行解密。下面是代码
public static byte[] decryptRes(final byte[] sessionKey, final String symetricKeyAlg,
final String pkiProvider, final String encXML, final String msgRefNo)
throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException,
BadPaddingException, NoSuchProviderException, InvalidAlgorithmParameterException {
Security.addProvider(new BouncyCastleProvider());
final StringBuilder strBuilder = new StringBuilder(msgRefNo);
strBuilder.append("0000");
final SecretKeySpec symmKeySpec = new SecretKeySpec(sessionKey, "AES");
final Cipher symmCipher = Cipher.getInstance("AES/GCM/NoPadding", "BC");
symmCipher.init(2, symmKeySpec, new IvParameterSpec(strBuilder.toString().getBytes()));
final byte[] xmlData = symmCipher.doFinal(base64Decode(encXML));
return xmlData;
}
现在,当调用此代码时,它会抛出
异常:java.security.NoSuchAlgorithmException:没有这样的算法:AES/GCM/NoPadding
而不是
NoSuchProviderException。
已经添加了必要的提供程序,但我仍然遇到上述异常。
正在使用 Java 版本 7。
使用的罐子:
-
bcprov-jdk15to18-169.jar
-
bcprov-ext-jdk15to18-169.jar
以上 jars 在应用程序 lib 文件夹中可用。
【问题讨论】: