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);
非常感谢!
我发现我正在验证的字符串不是签名的原始字符串,因此它是错误的。 验证码很好以防有人感兴趣。
该字符串包含时间戳,为了通过时间戳验证,它已被更改...永远无法通过验证!
感谢大家的评论
我正在使用 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);
非常感谢!
我发现我正在验证的字符串不是签名的原始字符串,因此它是错误的。 验证码很好以防有人感兴趣。
该字符串包含时间戳,为了通过时间戳验证,它已被更改...永远无法通过验证!
感谢大家的评论