Подпишите закрытым ключом и подтвердите с помощью открытого

rsautl OpenSSL позволяет подписывать с помощью закрытого ключа. Это без хэша. Затем восстановление подписанного файла с открытым ключом.

Я просмотрел CryptCreateHash/CryptSignHash/CryptHashData, но не знаю, как это сделать. Я считаю, что эти функции будут подписывать только хэш данных, а не сами данные.

Есть ли способ подписать с закрытым ключом и без хэша?

Изменить: внесены необходимые изменения из рекомендаций jww.


person StackPointer    schedule 09.06.2015    source источник
comment
Не используйте функции, подобные rsa_private_encrypt и rsa_public_decrypt. Подходите к подписанию как к подписанию, а не с точки зрения таких вещей, как шифрование с помощью закрытого ключа (что не допустимая криптографическая операция). Если вы хотите зашифровать с помощью закрытого ключа, вам обычно нужна схема подписи. с восстановлением.   -  person jww    schedule 09.06.2015
comment
Понял. Я не называю их так, это то, как они упоминаются в rsautl. openssl.org/docs/crypto/rsa.html   -  person StackPointer    schedule 09.06.2015
comment
См. также эквивалент RSA_public_decrypt и MS Crypto API.   -  person jww    schedule 09.06.2015
comment
Спасибо. Это было полезно.   -  person StackPointer    schedule 09.06.2015
comment
Хорошо, я нашел пример того, как это сделать с помощью инструментов командной строки OpenSSL. См. раздел OpenSSL и MS CryptoAPI: разные цифровые подписи. Но я не уверен, что openssl dgst -sign звонит rsa_private_encrypt.   -  person jww    schedule 09.06.2015
comment
Большое спасибо. Я понял, почему вызов CryptCreateHash терпел неудачу. Ваш пост мне очень помог.   -  person StackPointer    schedule 09.06.2015