Получение подписанных данных после подписания - PullRequest
1 голос
/ 28 июня 2011

Хорошо, когда я изучал файлы сигнатур на Java, я всегда читал, что вы хэшируете свой файл и прикрепляете хеш к реальному файлу, выполняете шифрование и отправляете его (например) на сервер.На сервере вы расшифровываете файл, получаете файл, создаете его хеш, и если его новый хеш равен хешу клиента, файл действительно является клиентским.

НО теперь, когда мне нужно его реализоватьв моем проекте я могу только найти примеры, использующие java.security.Signature (как этот) , и в этих примерах они подписывают файл, а затем вместо этого отправляют файл и подписанный файл для проверкитолько подписанный файл.

Это правильный способ его реализации?Если нет, как лучше?Пожалуйста, дайте несколько указаний.

Ответы [ 2 ]

2 голосов
/ 28 июня 2011

Ссылка, которую вы разместили, просто показывает пример, где вторая половина кода, вызывающего
public static boolean verifySig(byte[] data, PublicKey key, byte[] sig), просто проверяет первую половину кода, который создал подпись.
Идея состоит в том, что в signer.initVerify(key); вы передаете открытый ключ подписавшего, затем вызываете signer.update(data); на данных, на которых вы думаете подпись, и затем вызываете проверку, передавая ей подпись.
Если подпись, которую вы передалив, действителен для данных, на которых, по вашему мнению, основана подпись, тогда проверка успешна.

1 голос
/ 28 июня 2011

Нет связи между шифрованием файла и его подписью.Вы можете сделать одно или оба независимо.

Чтобы подписать, вы вычисляете хеш, шифруете хеш с помощью закрытого ключа и отправляете зашифрованный хеш вместе с документом (файлом).Для проверки вы вычисляете хеш документа, который вы получили, дешифруете зашифрованный хэш с помощью открытого ключа и сравниваете их.Если хэши совпадают, подпись проверяется.

Поскольку проверка использует открытый ключ, любой может проверить подпись.Но только лицо (или организация) с закрытым ключом может подписать его.Таким образом, он подтверждает происхождение документа.

В дополнение к этому, если вы хотите, вы можете зашифровать файл.Вы можете подписать файл до или после шифрования.Все зависит от того, что вы хотите с ним сделать и насколько безопасно вы хотите его сохранить.Например, SSL-сертификаты не зашифрованы, поскольку браузер должен проверять их содержимое и подписи.

...