收藏
回答

微信支付,如何加载商户私钥,提示Illegal base64 character 2d,如果解決

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

5 个回答

  • 蜜蜂
    蜜蜂
    2022-09-06

    用错证书了,需要加载商户平台下的apiclient_key.pem

    2022-09-06
    有用 1
    回复
  • Learn peng
    Learn peng
    2023-12-12
      /**
      * 获取私钥。
      *
      * @param filename 私钥文件路径  (required)
      * @return 私钥对象
      */
    public static PrivateKey getPrivateKey(String filename) throws IOException {
    
    
      String content = new String(Files.readAllBytes(Paths.get(filename)), "utf-8");
      try {
        String privateKey = content.replace("-----BEGIN PRIVATE KEY-----", "")
            .replace("-----END PRIVATE KEY-----", "")
            .replaceAll("\\s+", "");
    
    
        KeyFactory kf = KeyFactory.getInstance("RSA");
        return kf.generatePrivate(
            new PKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKey)));
      } catch (NoSuchAlgorithmException e) {
        throw new RuntimeException("当前Java环境不支持RSA", e);
      } catch (InvalidKeySpecException e) {
        throw new RuntimeException("无效的密钥格式");
      }
    }
    
    
    
    2023-12-12
    有用
    回复
  • 小温小温、
    小温小温、
    2023-01-11

    有知道如何从p12文件中读取私钥吗?

    2023-01-11
    有用
    回复
  • 吕健
    吕健
    2022-09-03

    这句话写哪啊

    2022-09-03
    有用
    回复 1
    • W
      W
      04-01
      1
      04-01
      回复
  • 北望沣渭
    北望沣渭
    2022-05-24

    使用Java加载密钥时,抛出异常InvalidKeyException: Illegal key size

    受到美国法律的约束,早期Java的运行时限制了JCE支持的密钥长度,即默认不支持256位的AES。解决的方法有三个:

    Security.setProperty("crypto.policy", "unlimited");
    

    Java9及以上,均无限制。


    2022-05-24
    有用
    回复
登录 后发表内容