3 messaggi dal 03 dicembre 2020
Buongiorno a tutti,
ho un Problema nel decrittografare una stringa che crittografo con certificato.

Ecco il codice:

Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates
Imports System.Text
Imports System.String


Public Function Crittografa(ByVal testo As String) As String

Try
Dim Certificate As String = Application.StartupPath & "\Certificato.cer"
Dim cert As New X509Certificate2(Certificate)
Dim rsaEncryptor As RSACryptoServiceProvider = CType(cert.PublicKey.Key, RSACryptoServiceProvider)

Dim stringa As Byte() = System.Text.Encoding.ASCII.GetBytes(testo)

Dim Matrice() As Byte = rsaEncryptor.Encrypt(stringa, False)

Return Convert.ToBase64String(Matrice)

Catch ex As Exception

MsgBox(ex.Message)
Return "Errore"

End Try

End Function


Public Function DECrittografa(ByVal testo As String) As String

Try
Dim Certificate As String = Application.StartupPath & "\Certificato.cer"
Dim cert As New X509Certificate2(Certificate)
Dim rsaEncryptor As RSACryptoServiceProvider = CType(cert.PublicKey.Key, RSACryptoServiceProvider)

Dim Matrice() As Byte = Convert.FromBase64String(testo)

Dim stringa As Byte() = rsaEncryptor.Decrypt(Matrice, False) ' qui mi da l'errore! ("Chiave non esistente")

Dim decryptedText As String = Encoding.UTF8.GetString(stringa)

Return decryptedText


Catch ex As Exception

MsgBox(ex.Message)
Return "Errore"

End Try

End Function


Il procedimento, da quello che ho letto in giro, mi pare corretto, però non funziona... Qualcuno mi saprebbe dare una dritta? grazie.
28 messaggi dal 09 ottobre 2019
www.breveglieri.it
Usa il tag CODE (pulsante <>) per formattare il codice sul forum, altrimenti non si riesce a capire molto.

Inoltre, definisci cosa intendi con "non funziona", perché detto così sembra più l'espressione tipica del cliente finale, mentre noi siamo tecnici.

Ciao!

MARCO BREVEGLIERI
(Senior Software and Web Developer, Teacher and Consultant)
» Homepage: https://www.breveglieri.it
» Blog: https://www.compilaquindiva.com
» Podcast: https://www.delphipodcast.com
3 messaggi dal 03 dicembre 2020
Ciao,
il mio non funziona si riferisce a questa riga di codice:

Dim stringa As Byte() = rsaEncryptor.Decrypt(Matrice, False) ' qui mi da l'errore! ("Chiave non esistente")


ho indicato in formto commento il problema che ritorna come ex.message

Quindi, ricapitolando, riesco a criptare perfettamente ma poi quando vado a decriptare non mi trasforma la matrice in stringa (non funziona la riga di codice che ho indicato) e quindi non riesco a recuperare il testo iniziale.

Da quello che ho letto in giro la procedura sembra formalmente corretta ma c'è qualcosa che in fase di decrittografia non aggancia la chiave.
Modificato da FrancescoC76 il 18 gennaio 2021 16:05 -
28 messaggi dal 09 ottobre 2019
www.breveglieri.it
FrancescoC76 ha scritto:
Ciao,
il mio non funziona si riferisce a questa riga di codice:

Dim stringa As Byte() = rsaEncryptor.Decrypt(Matrice, False) ' qui mi da l'errore! ("Chiave non esistente")




Teoricamente, non dovresti decriptare usando la chiave privata?

MARCO BREVEGLIERI
(Senior Software and Web Developer, Teacher and Consultant)
» Homepage: https://www.breveglieri.it
» Blog: https://www.compilaquindiva.com
» Podcast: https://www.delphipodcast.com
3 messaggi dal 03 dicembre 2020
Ciao Marco,
ti riscrivo qui la funzione che uso

Public Function DECrittografa(ByVal testo As String) As String

Try
Dim Certificate As String = Application.StartupPath & "\Certificato.cer"
Dim cert As New X509Certificate2(Certificate)
Dim rsaEncryptor As RSACryptoServiceProvider = CType(cert.PublicKey.Key, RSACryptoServiceProvider)

Dim Matrice() As Byte = Convert.FromBase64String(testo)

Dim stringa As Byte() = rsaEncryptor.Decrypt(Matrice, False) ' qui mi da l'errore! ("Chiave non esistente")

Dim decryptedText As String = Encoding.UTF8.GetString(stringa)

Return decryptedText


Catch ex As Exception

MsgBox(ex.Message)
Return "Errore"

End Try

End Function


Tu dici di usare la chiave privata, ma così come l'ho scritta non usa la chiave del certificato? Come dici che andrebbe modificata la funzione?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.