Java SHA1 с проверкой RSA всегда ложна, почему? - PullRequest
0 голосов
/ 14 ноября 2018

Я делаю метод проверки SHA1 с RSA, но результат всегда ложный, я что-то не так закодировал или открытые ключи неверны или что-то в этом роде?

Вот код:

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 голосов
/ 24 декабря 2018

Я обнаружил, что строка, которую я проверял, не была оригинальной строкой, подписанной , и, следовательно, она была ложной. Код подтверждения был хорошим на случай, если кому-то будет интересно.

Строка содержала временную метку, и, чтобы пройти проверку временной метки, она была изменена ... которая никогда не сможет пройти как проверенная!

Спасибо за все комментарии

...