Java SHA1withRSA 验证总是错误的,为什么?

Java SHA1withRSA verification is always false, why?

我正在使用 SHA1withRSA 验证方法,但结果总是错误的,是我编码错误还是 public 密钥错误或其他原因?

代码如下:

Signature signature = Signature.getInstance("SHA1withRSA");
File file = this.getPublicKey();
byte[] keyBytes = Files.readAllBytes(file.toPath());

// Setup RSA key
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
RSAPublicKey publicKey = (RSAPublicKey) keyFactory.generatePublic(pubKeySpec);

// verify signatures
byte[] signatureBytes = Base64.decodeBase64(this.firmaB64);
signature.initVerify(publicKey);
signature.update(this.parteFirmada.getBytes());
boolean result = signature.verify(signatureBytes);

非常感谢!

我发现我正在验证的字符串不是签名的原始字符串,因此它是错误的。 验证码很好以防有人感兴趣。

该字符串包含时间戳,为了通过时间戳验证,它已被更改...永远无法通过验证!

感谢大家的评论