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


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.

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