Criptazione stringhe

di il
16 risposte

Criptazione stringhe

Ciao. Devo criptare Delle stringhe.
Uso des e rijndael.
Il Vettore IV che devo usare, passatomi dal web service, è lungo 24 caratteri che trasformato in byte diviene lungo 24.
Ma la funzione di criptazione mi da errore dicendo che il Vettore e troppo lungo per l algoritmo.

Dove è l errore?
Grazie

16 Risposte

  • Re: Criptazione stringhe

    Senza vedere il codice?

    Perché posti più volte la stessa domanda?
  • Re: Criptazione stringhe

    La domanda è malposta, dipende dal metodo che utilizzi, non solo dallalgoritmo
  • Re: Criptazione stringhe

    +m2+ ha scritto:


    La domanda è malposta, dipende dal metodo che utilizzi, non solo dallalgoritmo
    che intendi il metodo?


    Uso rijnadel
  • Re: Criptazione stringhe

    oregon ha scritto:


    Senza vedere il codice?

    Perché posti più volte la stessa domanda?

    e questo è il codice:

    Private Sub Button11_Click(sender As System.Object, e As System.EventArgs) Handles Button11.Click


    Try

    Dim original As String = "Here is some data to encrypt!"

    ' Create a new instance of the RijndaelManaged
    ' class. This generates a new key and initialization
    ' vector (IV).



    Dim Key As Byte() = System.Text.Encoding.Unicode.GetBytes("iQe8hgLqq6UHvBQ4uLElgWs8dVrGylkw22Sy9ZlHVO4=")
    Dim IV As Byte() = System.Text.Encoding.Unicode.GetBytes("8yCa8YjZMy7yPO2Hj50vxQ==")


    Using myRijndael As New RijndaelManaged()

    myRijndael.GenerateKey()
    myRijndael.GenerateIV()

    ' Encrypt the string to an array of bytes.
    'Dim encrypted As Byte() = EncryptStringToBytes(original, myRijndael.Key, myRijndael.IV)
    Dim encrypted As Byte() = EncryptStringToBytes(original, Key, IV)

    ' Decrypt the bytes to a string.
    'Dim roundtrip As String = DecryptStringFromBytes(encrypted, myRijndael.Key, myRijndael.IV)
    Dim roundtrip As String = DecryptStringFromBytes(encrypted, Key, IV)

    'Display the original data and the decrypted data.
    Console.WriteLine("Original: {0}", original)
    Console.WriteLine("Round Trip: {0}", roundtrip)
    End Using
    Catch ex As Exception
    Console.WriteLine("Error: {0}", ex.Message)
    End Try



    End Sub


    Function EncryptStringToBytes(ByVal plainText As String, ByVal Key() As Byte, ByVal IV() As Byte) As Byte()
    ' Check arguments.
    If plainText Is Nothing OrElse plainText.Length <= 0 Then
    Throw New ArgumentNullException("plainText")
    End If
    If Key Is Nothing OrElse Key.Length <= 0 Then
    Throw New ArgumentNullException("Key")
    End If
    If IV Is Nothing OrElse IV.Length <= 0 Then
    Throw New ArgumentNullException("IV")
    End If
    Dim encrypted() As Byte

    ' Create an RijndaelManaged object
    ' with the specified key and IV.
    Using rijAlg As New RijndaelManaged()

    'rijAlg.Key = Key
    'rijAlg.IV = IV

    ' Create an encryptor to perform the stream transform.
    Dim encryptor As ICryptoTransform = rijAlg.CreateEncryptor(Key, IV)
    ' Create the streams used for encryption.
    Using msEncrypt As New MemoryStream()
    Using csEncrypt As New CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)
    Using swEncrypt As New StreamWriter(csEncrypt)
    'Write all data to the stream.
    swEncrypt.Write(plainText)
    End Using
    encrypted = msEncrypt.ToArray()
    End Using
    End Using
    End Using

    ' Return the encrypted bytes from the memory stream.
    Return encrypted

    End Function 'EncryptStringToBytes


    GRAZIE
  • Re: Criptazione stringhe

    Quando posti del codice inseriscilo tra tag CODE.

    Provando il tuo codice, non ho errori ma non ho potuto provare la

    DecryptStringFromBytes

    perché non l'hai postata.
  • Re: Criptazione stringhe

    La decript non serve, io devo solo criptare

    poi sarà il web service in remoto a decriptare

    come non hai errori vedi che l'errore lo scrive nella console

    Catch ex As Exception
    Console.WriteLine("Error: {0}", ex.Message)
    End Try

    grazie
  • Re: Criptazione stringhe

    Sì ... non l'avevo notato per la fretta.

    Comunque la chiave deve essere di 32 byte e il vettore IV di 16 byte, ad esempio
    
                Dim Key As Byte() = System.Text.Encoding.ASCII.GetBytes("12345678901234567890123456789012")
                Dim IV As Byte() = System.Text.Encoding.ASCII.GetBytes("1234567890123456")
    
    Occhio alla codifica ASCII/Unicode

    Se usi i tuoi parametri, non ti servono le
    
    myRijndael.GenerateKey()
    myRijndael.GenerateIV()
    
  • Re: Criptazione stringhe

    Esatto corretto,

    e come mai questi che gestiscono il web service a cui devo inviare queste stringhe criptate, mi danno chiave e IV di dimensioni diverse?

    come quelle che vedi sotto:
    chiave: iQe8hgLqq6UHvBQ4uLElgWs8dVrGylkw22Sy9ZlHVO4= che è lunga 44

    IV: awdLMkavaK+OoFCP4eIGcg== che è lungo 24


    Perchè hanno queste dimensioni?

    devo usare un altro metodo di criptazione che accetti valori di queste dimensioni o cosa???

    GRAZIE infinite
  • Re: Criptazione stringhe

    Io non so perché ti passano dati di quella lunghezza. Dovresti dircelo tu, a partire da quale sito lo fa e dalle informazioni che i gestori del sito ti dovrebbero inviare.
  • Re: Criptazione stringhe

    Ci sto provando non mi danno risposte esaustive, continuano a dire: questo è l'esempio:

    $encrypted = base64_encode(openssl_encrypt($xml, 'aes-256-cbc', $kchiave, OPENSSL_RAW_DATA,
    $kiv));

    come puoi vedere i loro esempi sono solo in PHP ed io sto smadonnando per tradurli in VB.net

    questi sono:
    Hosting Solutions
    Genesys Informatica S.r.l.
    Firenze (FI)
  • Re: Criptazione stringhe

    Ma non è che i due dati ti arrivano codificati Base64 ? Se è così dovresti scrivere
    
                Dim Key As Byte() = Convert.FromBase64String("iQe8hgLqq6UHvBQ4uLElgWs8dVrGylkw22Sy9ZlHVO4=")
                Dim IV As Byte() = Convert.FromBase64String("8yCa8YjZMy7yPO2Hj50vxQ==")
    
  • Re: Criptazione stringhe

    GRANDE!!!!!



    CORRETTTTTTTTOOOOOOOOOOOOOOOOOOOO
  • Re: Criptazione stringhe

    OK adesso devo produrre il risultato della criptazione in una stringa e non in un array di byte o in uno stream come fa la funzione che ti ho passato all'inizio:

    'Write all data to the stream.
    swEncrypt.Write(plainText)

    ma devo produrre una stringa.

    GRAZIE
  • Re: Criptazione stringhe

    Https://docs.microsoft.com/it-it/dotnet/visual-basic/programming-guide/language-features/strings/how-to-convert-an-array-of-bytes-into-a-string ,per i singoli problemi ti consiglierei di cercare tu una soluzione su internet prima di chiedere al forum ,
Devi accedere o registrarti per scrivere nel forum
16 risposte