【问题标题】:No Such Algorithm : AES/GCM/NoPadding没有这样的算法:AES/GCM/NoPadding
【发布时间】: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。

使用的罐子:

  1. bcprov-jdk15to18-169.jar

  2. bcprov-ext-jdk15to18-169.jar

以上 jars 在应用程序 lib 文件夹中可用。

【问题讨论】:

    标签: java aes-gcm


    【解决方案1】:

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

    下的java.security文件

    >$JAVAHOME/lib/security/java.security

    如果未添加提供的则添加以下行

    security.provider.=org.bouncycastle.jce.provider.BouncyCastleProvider

    点击链接了解详情:

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

    【讨论】:

      猜你喜欢
      • 2021-03-11
      • 2018-02-19
      • 2021-12-05
      • 2021-09-24
      • 2016-11-14
      • 2018-09-20
      • 2019-02-20
      • 2018-02-11
      • 2019-05-30
      相关资源
      最近更新 更多