Подписать с помощью RSA-1024 дайджест SHA-256: какой размер? - PullRequest
5 голосов
/ 04 декабря 2009

Мне было интересно: 1) если я вычислю дайджест некоторых данных с помощью SHA-512 =>, что приведет к хэшу в 64 байта 2) и затем я подписываю этот хэш RSA-1024 =>, поэтому блок из 128 байтов, что больше 64 байтов дайджеста

=> означает ли это, что в конце мой подписанный хеш будет точно 128 байт?

Большое спасибо за любую информацию.

1 Ответ

8 голосов
/ 22 января 2010

При использовании RSA, как указано PKCS # 1 , данные, которые должны быть подписаны, сначала хешируются с помощью хэш-функции, а затем получают дополняется (более или менее сложная операция который преобразует результат хеширования в модульное целое число), а затем к этому числу применяется математическая операция RSA. Результатом является целое число n , где n - длина в битах «модуля», обычно называемого «размером ключа RSA». По сути, для RSA-1024 n равно 1024. 1024-битное целое число кодируется как 128 байтов, в точности, согласно методу кодирования, описанному в PKCS # 1 (PKCS # 1 очень читабелен и не слишком длинный).

Возможность использования ключа RSA n для подписи данных с помощью хэш-функции, которая выдает выходные данные длиной m , зависит от деталей заполнения. Как следует из названия, заполнение включает в себя добавление некоторых дополнительных данных к выводу хеша, поэтому n должно быть больше m , оставляя место для дополнительных данных. 1024-битный ключ может использоваться с SHA-512 (который генерирует 512-битные строки). Вы не можете использовать 640-битный ключ с SHA-512 (и в любом случае вы не будете использовать его, поскольку 640-битные ключи RSA могут быть сломаны - хотя и не тривиально).

...