Размер подписи не зависит от алгоритма хеширования, используемого для sh подписанных данных. Это зависит только от размера ключа.
Подпись RSA основана на модульном возведении в степень, т. Е. sig = m ^ d mod N
, где:
m
- сообщение для подписи d
частный показатель (его размер N / 2
, т. Е. 1024 бита для RSA 2048). N
модуль sig
значение подписи
Для такого расчета конечным результатом является остаток от результата m ^ d
, деленный на модуль (примерно, размер ключа RSA). m
и d
- довольно большие значения, и когда вы включаете одно за другим, значение будет огромным и не будет соответствовать даже длине модуля, поэтому используется последняя операция mod
. И вы можете видеть, что нет такого термина, как "ха sh". Иногда (когда используются очень маленькие значения), размер результирующего значения может быть меньше размера модуля. В таких случаях значение подписи дополняется, чтобы соответствовать длине модуля.
Из необработанной подписи вы можете определить размер ключа RSA, но не можете вывести алгоритм ha sh, встроенный в сигнатуру, поэтому подпись содержит алгоритм asymmetri c и имя ha sh, например sha256RSA
, в противном случае вам придется хранить алгоритм ha sh где-то в сообщении. Поскольку комбинация (алгоритм асимметрии c и алгоритм ha sh) конечна и довольно мала, было достаточно хорошо назначить уникальные OID для таких комбинаций.