В чем разница между OpenSSL и pkeyutl -знак и OpenSSL rsautl -знак

в чем разница между openssl pkeyutl -sign -pkeyopt digest:sha256 и openssl rsautl -sign ? Они делают то же самое?

27
задан demonguy
13.03.2023 11:38 Количество просмотров материала 2639
Распечатать страницу

1 ответ

pkeyutl -sign с ключом RSA (и rsa_padding_mode по умолчанию pkcs1 что конкретно означает pkcs1-v1_5) и -pkeyopt digest:$hash делает шаги 2-6 из представителя EMSA-PKCS1-v1_5-кодировать в п. 9.2 rfc3447, затем Шаг 2 из RSASSA-PKCS1-v1_5-знак в разделе 8.2. Другими словами, он делает все, кроме хэша данных (но он проверяет длина входной хэш). Обратите внимание, что если хэш -имя вы указываете здесь отличается от хэша вы на самом деле используется, в результате подпись будет не правильно.

rsautl -sign (аналогично дефолту) выполняет только шаги 4-6 и Шаг 2. Другими словами, он не добавляет ASN.1 кодирование AlgorithmIdentifier в необработанный хэш, поэтому вам нужно сделать это самостоятельно, если вы хотите, чтобы ваши подписи были поняты и приняты другими. pkeyutl -sign без -pkeyopt digest также пропускает ASN.1 кодировка.

для полноты, dgst -$hash -sign или его сокращенную форму $hash -sign С ключом RSA делает всю работу: хэш, ASN.1 кодировать, pad 01FF..Ноль ноль, и modexp.

6
отвечен dave_thompson_085 2023-03-14 19:26

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх