Хэширование в методе SignData C#

Здравствуйте!

Разбираюсь с функционалом библиотеки. Почитал документацию про методы SignData и VerifyData. В другом файле увидел, что существуют методы HashData и SignHash. При этом также на выбор есть два флага KC_HASH_GOST95 и KC_HASH_SHA256.

Правильно ли я понимаю, что при использовании метода SignData в него передаются входные данные, но при подписании внутри данного метода происходит сначала их хэширование по определенному алгоритму, например, sha256, а затем уже подписание хэша. Т.е. в полученной подписи хранится хэш данных. Далее при проверке методом VerifyData при attached вложенные данные переводятся в хэш, из подписи достается хэш и эти хэши сравниваются. При detached тоже самое, просто данные хранятся отдельно от подписанного хэша.

При использовании же HashData можно выбрать алгоритм хэширования, т.е. sha256 или Gost34311_95. И за тем подписать полученный хэш с помощью функции SignHash. Другими словами при использовании SignData нет возможности выбрать алгоритм хэширования, он задан изначально в метод. Не знаю какой он в SignData sha256 или Gost34311_95. А при использовании HashData и SignHash можно задать необходимый алгоритм хэширования.

Здравствуйте! Вопрос всё еще актуален. Не смогли разобраться.

Добрый день!

Все верно понимаете. Только вот выбор алгоритма хэширования зависит от ключа, которым производите подпись (Гост2004 - Gost34311_95, для RSA - sha256).

Алгоритм какой угодно задать тоже нельзя. Допустим нельзя найти хэш алгоритмом sha256 и подписать этот хэш ключом Gost2004. Данная подпись будет невалидна при проверке методом VerifyData()

Дайте знать, если не ответил на Ваш вопрос

1 Симпатия

Ответили, спасибо Вам!