Aes - Decrypt - Problema caratteri extra

di il
5 risposte

Aes - Decrypt - Problema caratteri extra

Ciao ragazzi,
non riesco a venire a capo di questo fastidioso evento.

Utilizzando la classe che allego, la stringa data in pasto alla funzione viene convertita regolarmente ma alla fine vengono aggiunti punti interrogativi a go go.
Es. Prova????????????????????????????

Pensando che il problema fosse nella conversione byte/ascii mi sono concentrato li provando inoltre con la conversione in UTF8 ma nulla.

Non sapendo piu' dove cercare e con la vista ormai andata, chiedo help alla community.

La classe che utilizzo è questa:
        Dim sEncryptedString As String = text

        Dim myRijndael As New RijndaelManaged
        myRijndael.Padding = PaddingMode.Zeros
        myRijndael.Mode = CipherMode.CBC
        myRijndael.KeySize = 256
        myRijndael.BlockSize = 256

        Dim key() As Byte
        Dim IV() As Byte

        key = Encoding.ASCII.GetBytes(sKy)
        IV = Encoding.ASCII.GetBytes(sIV)

        Dim decryptor As ICryptoTransform = myRijndael.CreateDecryptor(key, IV)

        Dim sEncrypted As Byte() = Convert.FromBase64String(sEncryptedString)

        Dim fromEncrypt() As Byte = New Byte(sEncrypted.Length) {}

        Dim msDecrypt As New MemoryStream(sEncrypted)
        Dim csDecrypt As New CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)

        csDecrypt.Read(fromEncrypt, 0, fromEncrypt.Length)

        Return (Encoding.ASCII.GetString(fromEncrypt))
Grazie.
Salvo.

5 Risposte

  • Re: Aes - Decrypt - Problema caratteri extra

    Ciao Salvo,
    quella classe non la conosco, ma nella guida ufficiale di Microsoft qui https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.rijndaelmanaged?view=netcore-3.1 trovi un esempio.
    Hai provato a seguire passo per passo questa guida?
    Buona programmazione.
  • Re: Aes - Decrypt - Problema caratteri extra

    Ciao Lele buondi'.
    La classe che hai indicato non l'ho utilizzata (ma l'avevo vista ed approfondita) perchè quella che ho scelto di utilizzare nel frattempo l'ho riscritta anche per PHP per cifrare le chiamate in entrata/uscita dal server.
    E devo dire con ottimi risultati se non fosse per questo fastidioso problema che genera in fase di decrypt su VB.

    Studiare, provare, sbagliare e riprovare è la scuola migliore quindi nell'attesa di capire da cosa dipenda il mio problema mi vado a rivedere la classe che hai indicato e come adattarla a PHP.

    Ciauz e grazie
    Salvo.
  • Re: Aes - Decrypt - Problema caratteri extra

    Tu hai capito cosa fanno queste due righe ???
    myRijndael.Padding = PaddingMode.Zeros
    myRijndael.BlockSize = 256
    Non vorrei sbagliare (non ho mai usato questa classe) ma secondo me, visto che lavora a blocchi di 256 byte, se l'ultimo blocco non è perfettamente 256 byte lui riempie di zeri la parte terminante.

    Secondo me quei punti di domanda che ti ritrovi è il tentativo di conversione da una serie di zeri ad un testo in ASCII.

    Direi quindi che prima della riga "GetString" dovresti togliere eventuali zeri finali nell'array di byte precedentemente convertiti
  • Re: Aes - Decrypt - Problema caratteri extra

    Buongiorno SirJo

    SirJo ha scritto:


    Tu hai capito cosa fanno queste due righe ???
    myRijndael.Padding = PaddingMode.Zeros
    myRijndael.BlockSize = 256
    Yes, di fatto è stata la prima cosa su cui mi sono fermato a ragionare..da documentazione i blocchi devono avere lunghezza standard e se inferiore vengono aggiunti gli zeri finali ma sono andato avanti perchè lo reputavo un blocco necessario.
    Secondo me quei punti di domanda che ti ritrovi è il tentativo di conversione da una serie di zeri ad un testo in ASCII.
    Direi quindi che prima della riga "GetString" dovresti togliere eventuali zeri finali nell'array di byte precedentemente convertiti
    Infatti nel primo post ho indicato che mi sono concentrato sulla conversione byte/ascii ma in realtà non vanno convertiti ma eliminati gli zeri finali.

    Grazie mille per l'input, valuto questa cosa e integro la classe.

    Salvo
  • Re: Aes - Decrypt - Problema caratteri extra

    Grazie all'input di SirJo ho implementato il codice con un paio di passaggi per pulire la stringa di ritorno.
    Ho prima tolto eventuali spazi alla fine della stringa con RTrim e poi ho fatto un .Replace(vbNullChar, "") (e per sicurezza anche un .Replace(Chr(0), "")) dei caratteri nulli eventualmente presenti.

    Il risultato è la mia bella stringa pulita e funzionante.

    Tnx a lot guys!
Devi accedere o registrarti per scrivere nel forum
5 risposte