java 8 rsa 签名出错, 原因很简单.密钥=后后面多了字符串.导致出错了. 少没问题.
return signSHA256RSA(input, secret);
// Create base64 encoded signature using SHA256/RSA.private static String signSHA256RSA(String input, String strPk) throws Exception { // Remove markers and new line characters in private key String realPK = strPk.replaceAll("-----END PRIVATE KEY-----", "") .replaceAll("-----BEGIN PRIVATE KEY-----", "").replaceAll("\n", ""); byte[] b1 = Base64.getDecoder().decode(realPK.getBytes(Charsets.UTF_8)); PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(b1); KeyFactory kf = KeyFactory.getInstance("RSA"); Signature privateSignature = Signature.getInstance("SHA256withRSA"); privateSignature.initSign(kf.generatePrivate(spec)); privateSignature.update(input.getBytes("UTF-8")); byte[] s = privateSignature.sign(); return Base64.getEncoder().encodeToString(s);}