Jawaban:
pkeyutl -sign
dengan kunci RSA (dan rsa_padding_mode
default ke pkcs1
yang secara spesifik berarti pkcs1-v1_5) DAN -pkeyopt digest:$hash
melakukan langkah 2-6 EMSA-PKCS1-v1_5-ENCODE di bagian 9.2 dari rfc3447, kemudian langkah 2 dari RSASSA-PKCS1-v1_5-SIGN di bagian 8.2. Dengan kata lain ia melakukan segalanya kecuali hash data (tetapi ia memeriksa panjang hash input). Perhatikan bahwa jika nama hash yang Anda tentukan di sini berbeda dari hash yang sebenarnya Anda gunakan, tanda tangan yang dihasilkan tidak akan memverifikasi dengan benar.
rsautl -sign
(sama-sama default) tidak hanya langkah 4-6 dan langkah 2. Dengan kata lain, itu TIDAK menambahkan ASN.1 AlgorithmIdentifier encoding ke hash mentah, jadi Anda perlu melakukannya sendiri jika Anda ingin tanda tangan Anda dipahami dan diterima oleh orang lain. pkeyutl -sign
TANPA -pkeyopt digest
juga melewatkan pengkodean ASN.1.
Untuk kelengkapan, dgst -$hash -sign
atau bentuk $hash -sign
singkatnya dengan kunci RSA melakukan seluruh pekerjaan: hash, ASN.1 encode, pad 01FF..00, dan modexp.