.net RSACryptoServiceProvider поддерживает алгоритмы хеширования - PullRequest
0 голосов
/ 10 января 2012

У меня есть 35-байтовый хэш, который нужно подписать. Но когда я пытаюсь спеть это с SHA1

var rsa = new RSACryptoServiceProvider();
rsa.SignHash(hash, "SHA1");

я получаю ошибку "плохой хэш" (очевидно), потому что размер дайджеста SHA1 равен 20.

Теперь существует какой-либо другой алгоритм хеширования, кроме поддерживаемого SHA1. для instace

rsa.SignHash(hash, "SHA224");

1 Ответ

1 голос
/ 18 января 2012

Я не знаю ни одной хэш-функции, которая имеет 35 байтов в качестве вывода. SHA-224 составляет 28 байтов.

При использовании метода SignHash () хэш подписывается с использованием PKCS # 1 v.1.5. Частью этой подписи является информация, указывающая, какой именно хэш был использован, поэтому, если ваш хэш не является хешем SHA-1, вам не следует пытаться подписать его, указав SHA-1 (аналогично SHA-225)

Если вы хотите подписать свой 35-байтовый хеш, вы можете подумать о перефразировании его с помощью поддерживаемой хеш-функции:

rsa.SignData(hash, HashAlgorithm.Create("SHA256"));

И чтобы ответить на ваш актуальный вопрос: вот список поддерживаемых алгоритмов хеширования в .NET 4 .

...