收藏
回答

微信 API V3 通过API获取证书报文解密时,demo程序报错?

我是java,在申请入驻API接口的敏感信息加密中,解密获取的证书时报错  cannot find any provide supporting AES/GCM/NoPadding,这个该怎么整?

回答关注问题邀请回答
收藏

2 个回答

  • Mr.何
    Mr.何
    2019-09-06

    JDK8提供了AES/GCM的实现。

    解决方案:

    1. 用JDK8

    2. 引进第三方的包来为其提供加密或解密的支持。如下:

      a.添加maven依赖

      <dependency>
          <groupId>org.bouncycastle</groupId>
          <artifactId>bcprov-jdk15on</artifactId>
          <version>1.59</version>
      </dependency>

           b. 在加解密前添加以下代码:

    Security.addProvider(new BouncyCastleProvider());


    2019-09-06
    有用 1
    回复
  • 修罗
    修罗
    2020-07-25

    在这段代码可以运行之前,还有一个问题需要解决。

    Java本身限制密钥的长度最多128位,而AES256需要的密钥长度是256位,因此需要到Java官网上下载一个Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files。

    官方网站提供了JCE无限制权限策略文件的下载:

    JDK6的下载地址:

    http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

    JDK7的下载地址:

    http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

    JDK8的下载地址:

    http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html


    下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。

    如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security下覆盖原来文件,记得先备份。

    如果安装了JDK,将两个jar文件也放到%JDK_HOME%\jre\lib\security下。


    2020-07-25
    有用
    回复
登录 后发表内容
问题标签