Я думаю, проблема в том, что вы на самом деле не даете ему сообщение для проверки.
Подпись RSA работает, сначала хешируя сообщение (это «SHA1» в «SHA1withRSA»), а затем выполняя операция с ловушкой к ней.Это операция, которую легко выполнить в одном направлении и трудно в другом, если вы не знаете секретную информацию (закрытый ключ RSA).
Для проверки сначала необходимо инвертировать математическое преобразование (потому что онов одном направлении), а затем сравните хеш, встроенный в подпись, с хешем сообщения, которое вы только что вычислили.Сама подпись не содержит сообщения;чтобы проверить подпись, вам нужна подпись и подписанное сообщение.
На уровне API похоже, что класс Signature
ожидает, что вы вызовете update
ссодержимое сообщения, для которого была создана эта подпись.Без этого он, вероятно, сравнивает хеш с хешем пустой строки, поэтому, если ваше первоначально подписанное сообщение также не было пустой строкой, подпись фактически недействительна.