• Super User

    [VB][openSSL] Errore durante l'encrypt della stringa con certificato

    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):

    
    openssl rsautl -encrypt -in esempio.txt -out esempio.encrypted -inkey certificate.cer -certin -pkcs
    
    

    Decriptare:

    
    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:

    
    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:

    
    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.