|
|
|
|
Strumenti |
03-05-2021, 23:52 | #1 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1016
|
[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): Codice:
openssl rsautl -encrypt -in esempio.txt -out esempio.encrypted -inkey certificate.cer -certin -pkcs Codice:
openssl rsautl -decrypt -inkey cert\private.pem -in esempio.encrypted -out esempio.decrypted 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:
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) Grazie.
__________________
|
04-05-2021, 10:27 | #2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2745
|
Quando salvi i dati criptati li salvi come raw bytes o scrivi il base64? openssl scrive i raw bytes
|
04-05-2021, 10:29 | #3 | |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1016
|
Quote:
Come faccio ad ottenere i raw bytes? Grazie.
__________________
|
|
04-05-2021, 10:47 | #4 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2745
|
Li hai già, sono quelli contenuti in encryptedBytes. Li puoi scrivere ad esempio con File.WriteAllBytes
https://docs.microsoft.com/en-us/dot...s?view=net-5.0 |
04-05-2021, 11:50 | #5 | |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1016
|
Quote:
La codifica in base64 è necessaria, infatti codifico in base64 e scrivo il file. Successivamente, come prova, con openSSL decodifico e decripto ottengo il messaggio di errore.
__________________
|
|
04-05-2021, 13:58 | #6 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2745
|
Non ho provato il tuo codice VB ma ti spiego cosa ho fatto:
1. ho creato un file txt scrivendoci dentro qualcosa e l'ho criptato con il primo comando openssl che hai indicato 2. ho aperto il file criptato e non è in base64 (si riconoscerebbe perché sarebbe composto da caratteri ASCII) Quindi sono abbastanza sicuro che se vuoi decriptare con il secondo comando openssl che hai indicato, non devi salvare il file in base64. |
07-05-2021, 09:27 | #7 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1016
|
Grazie per le tue prove.
Purtroppo il file da inviare deve essere in base64 per questo ho fatto anche la prova di codifica/decodifica in base64.
__________________
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:23.