public static String sign(byte[] message, String keyPath) throws Exception {
Signature sign = Signature.getInstance("SHA256withRSA");
Resource resource = new ClassPathResource(keyPath);
byte[] content = resource.getInputStream().readAllBytes();
String key = new String(content, StandardCharsets.UTF_8);
sign.initSign(loadPrivateKey(key, "RSA"));
sign.update(message);
System.out.println("sign:" + Base64.getEncoder().encodeToString(sign.sign()));
return Base64.getEncoder().encodeToString(sign.sign());
}
sign.sign()
方法在被调用时会生成签名并重置 Signature 对象的状态。- 在倒数第二行,调用了
sign.sign()
来生成签名并打印输出。 - 在最后一行,再次调用
sign.sign()
来生成签名并返回结果。
由于 sign.sign()
在第一次调用后就重置了 Signature 对象的状态,第二次调用将会生成一个不同的签名,因为它是基于重置后的状态生成的。