Несколько методов подписи OpenSSL RSA дают разные результаты

Попытка обернуть голову вокруг подписания и использовать / тестировать различные варианты.

Я могу подписать с помощью этой команды:

openssl dgst -sha256 -sign private_key.pem -binary -out sig_file data_file

Но документация говорит, что я также могу использовать этот метод

openssl dgst -sha256 -binary data_file > hash_file
openssl rsautl -sign -inkey private_key.pem -keyform PEM -in hash_file > sig_file2

Но подписи отличаются, когда я ожидаю, что они будут идентичны. Либо я что-то упустил в опциях, либо что-то не так в моих предположениях.

Реальный вопрос из этой проблемы: есть ли способ подписать, используя параметры командной строки, учитывая, что у меня уже есть значение хеша и я получаю подпись, идентичную первой команде выше.

Чтобы добавить больше к этому, я могу легко воспроизвести первую команду в коде, и она совпадает с первой командой, описанной выше, что означает, что я могу подписать первым вычисленное значение хеш-функции.

mdctx = EVP_MD_CTX_create();
EVP_DigestInit_ex(mdctx, EVP_sha256(), NULL);
EVP_DigestUpdate(mdctx, data, len);
EVP_DigestFinal_ex(mdctx, hash, &s);
EVP_MD_CTX_destroy(mdctx);

kfile = fopen64(key_file, "r");
key = PEM_read_RSAPrivateKey(kfile, NULL, NULL, NULL);
fclose(kfile);

*sig = malloc(RSA_size(key));
RSA_sign(NID_sha256, hash, hlen, *sig, siglen, key);

Ответы на вопрос(1)

Ваш ответ на вопрос