Java SHA1withRSA验证始终为假,为什么?

时间:2018-11-14 11:23:35

标签: java security rsa sha1 verification

我正在执行SHA1withRSA验证方法,但结果始终为假,是我编码错误还是公钥错误?

代码如下:

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);

非常感谢!

1 个答案:

答案 0 :(得分:0)

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

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

感谢所有评论