收藏
回答

微信商家转账回调验签 在处理公钥时报错Unable to decode key?

// 去除公钥字符串中的 PEM 格式标记
publicKeyStr = publicKeyStr.replace("-----BEGIN PUBLIC KEY-----", "")
        .replace("-----END PUBLIC KEY-----", "")
        .replaceAll("\\s", "");
log.info("公钥去除PEM:"+publicKeyStr);
byte[] publicKeyBytes = java.util.Base64.getDecoder().decode(publicKeyStr);

// 解码公钥
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(keySpec)

// 使用 SHA256 with RSA 验证签名
Signature sig = Signature.getInstance("SHA256withRSA");
sig.initVerify(publicKey);
sig.update(message.getBytes(StandardCharsets.UTF_8));


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

1 个回答

  • Memory
    Memory
    02-27

    你这样写去除所有空白字符,公钥就读不了了

    02-27
    有用
    回复
登录 后发表内容