我试图在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: No such algorithm: AES/GCM/NoPadding
和
NoSuchProviderException .
必要的提供程序已经添加,但我仍然得到上面提到的异常。
正在使用Java版本7。
使用:
bcprov - jdk15to18 - 169. - jar
bcprov - ext - jdk15to18 - 169. - jar
上面的jar文件可以在application lib文件夹中找到。
我终于可以解决上述问题了。所提供的代码绝对没有问题。然而,我正面临着这个问题,因为BouncyCastle罐子没有注册为服务提供商。更新java.security文件在
祝辞JAVAHOME/lib/安全/美元java.security
如果没有添加,则添加下面一行
security.provider灵活;#祝辞= org.bouncycastle.jce.provider.BouncyCastleProvider
点击链接查看详情:
https://makeinjava.com/install-bouncy-castle-provider-configuring-java-runtime-example/