используйте jumpycastle, чтобы получить пару ключей, PrivateKey и PublicKey
зашифруйте исходное сообщение1 с помощью закрытого ключа, чтобы получить зашифрованное сообщение2.
расшифровайте зашифрованное сообщение2 с помощью открытого ключа. , успешно получите то же исходное сообщение1
на стороне C++:
на основе openssl, API «RSA_public_decrypt» и «RSA_private_encrypt».
используют один и тот же открытый ключ (который сгенерированный на стороне Java), чтобы расшифровать сообщение2, вернуть буфер, в котором каждый байт заполнен 0, и RSA_public_decrypt вернет успех.
кроме того:
на стороне C++, если использовать частный ключ для шифрования исходного сообщения1, чтобы получить зашифрованное сообщение3, а затем расшифровать его с помощью открытый ключ, успешное получение сообщения1. но сообщение3 не совпадает с зашифрованным сообщением2 (сторона Java).
все вышеперечисленное использовало RSA_NO_PADDING
на стороне Java, зашифровано больше раз, получите то же сообщение2
на Сторона C++, зашифрованная несколько раз, тоже получит то же сообщение3. но сообщение2 отличается от сообщения3.
вопрос в том, как расшифровать на стороне C++, чтобы получить оригинал message1, которое было зашифровано на стороне Java?
спасибо!
на стороне Java: [list] [*]используйте jumpycastle, чтобы получить пару ключей, PrivateKey и PublicKey
зашифруйте исходное сообщение1 с помощью закрытого ключа, чтобы получить зашифрованное сообщение2.
[*]расшифровайте зашифрованное сообщение2 с помощью открытого ключа. , успешно получите то же исходное сообщение1
[/list] на стороне C++: [list] [*]на основе openssl, API «RSA_public_decrypt» и «RSA_private_encrypt».
[*]используют один и тот же открытый ключ (который сгенерированный на стороне Java), чтобы расшифровать сообщение2, вернуть буфер, в котором каждый байт заполнен 0, и RSA_public_decrypt вернет успех.
[/list] кроме того: [list] [*]на стороне C++, если использовать частный ключ для шифрования исходного сообщения1, чтобы получить зашифрованное сообщение3, а затем расшифровать его с помощью открытый ключ, успешное получение сообщения1. но сообщение3 не совпадает с зашифрованным сообщением2 (сторона Java).
Я пытаюсь создать код на C#, который воспроизводит следующую команду OpenSSL
openssl dgst -sha256 -sign key.p8 -out sign.sha256 data.txt
Полученную подпись необходимо проверить командой
openssl dgst -sha256 -verify public_key.pub -signature...