RSA.SignHash SHA512 и SHA256 дают одинаковую длину подписи - PullRequest
0 голосов
/ 04 июля 2018

Странно, но длина массива сигнатур одинакова для кода:

using (RSA rsa = certifiateToUse.GetRSAPrivateKey())
        {
            byte[] bytesData = Encoding.UTF8.GetBytes(input);
            byte[] hash512 = rsa.SignHash(bytesData, HashAlgorithmName.SHA512, RSASignaturePadding.Pss);
            byte[] hash256 = rsa.SignHash(bytesData, HashAlgorithmName.SHA256, RSASignaturePadding.Pss);
        }

И hash512, и hash256 имеют длину 512 массивов. Я не могу найти разумный ответ на это. Может я что-то упускаю очевидное? Я ожидал, что это будет 512 и 256 байтов каждый.

1 Ответ

0 голосов
/ 04 июля 2018

SHA-256 и SHA-512 создают 256 и 512-битные хэши, соответственно.

Ваш ключ RSA имеет размер 1024 или 2048 бит, и размер блока при использовании его в качестве шифра такой же.

Поскольку оба хэша меньше размера блока RSA, они должны быть дополнены до этого размера. И поскольку они дополняются, результирующие подписи будут одинакового размера независимо от используемого алгоритма хеширования .

Подсказка - это последний параметр, который определяет алгоритм заполнения.

...