Ciao,
è la prima volta che utilizzo un certificato per criptare i dati.


Nella mia macchina ho installato openSSL, tramite il prompt dei comandi invio i due comandi:
Criptare (fornita da chi mi ha dato il certificato X.509 contenente la chiave pubblica con padding PKCS#1 v 1.5):
codice:
openssl rsautl -encrypt -in esempio.txt -out esempio.encrypted -inkey certificate.cer -certin -pkcs

Decriptare:
codice:
openssl rsautl -decrypt -inkey cert\private.pem -in esempio.encrypted -out esempio.decrypted

La stringa all'interno del file esempio.txt viene restituita correttamente.


Vorrei replicare le stesse istruzioni all'interno di una solution in VB con VisualStudio2019, cripto i miei dati (una stringa), ma se provo a decryptarla tramite openSSL ottengo l'errore:
codice:
RSA operation error
21060:error:0406506C:rsa routines:rsa_ossl_private_decrypt:data greater than mod len:crypto\rsa\rsa_ossl.c:401:

Codice VB:
codice:
Dim cert As X509Certificate2
Dim strToEncrypt As String
Dim encryptedString As String


' Lettura del certificato
cert = New X509Certificate2(Path.Combine(Directory.GetCurrentDirectory(), "certificate.cer"), "", X509KeyStorageFlags.Exportable)


'String da crittografare
strToEncrypt = "Questa è la mia stringa"


Dim rsaProvider As RSACryptoServiceProvider = DirectCast(cert.PublicKey.Key,  RSACryptoServiceProvider)


'Convert the string into a Byte Array and encrypt w/ public key
Dim bytesToEncrypt() As Byte = Encoding.ASCII.GetBytes(strToEncrypt)
Dim encryptedBytes() As Byte = rsaProvider.Encrypt(bytesToEncrypt, False)


Dim base64 As String = Convert.ToBase64String(encryptedBytes)

Cosa non va secondo voi?


Grazie.