没有这样的算法:AES/GCM/NoPadding

No Such Algorithm : AES/GCM/NoPadding

我正在尝试在 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;
}

现在,当调用此代码时,它抛出

Exception : java.security.NoSuchAlgorithmException: No such algorithm: AES/GCM/NoPadding

而不是

NoSuchProviderException.

已经添加了必要的提供程序,但我仍然遇到上述异常。

Java version 7 being used.

使用的罐子:

  1. bcprov-jdk15to18-169.jar

  2. bcprov-ext-jdk15to18-169.jar

上述 jar 在应用程序 lib 文件夹中可用。

我终于可以解决上述问题了。提供的代码绝对没有问题。但是,由于 BouncyCastle jar 未注册为服务提供商,我遇到了这个问题。 在

下更新了java.security文件

>$JAVAHOME/lib/security/java.security

如果未添加提供的,请添加以下行

security.provider.<#>=org.bouncycastle.jce.provider.BouncyCastleProvider

关注link了解详情:

https://makeinjava.com/install-bouncy-castle-provider-configuring-java-runtime-example/