我正在执行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);
非常感谢!
答案 0 :(得分:0)
我发现我正在验证的字符串不是签名的原始字符串,因此它是错误的。 验证码很好,以防有人感兴趣。
该字符串包含时间戳,并且要通过时间戳验证,它已被更改...永远无法通过验证!
感谢所有评论