Hallo.
Ich habe hier ein Problem mit der System.Security.Cryptography.RijndaelManaged bzw. AesManaged.
Und zwar kommt eine CryptographicException mit der Message "Zeichenabstände sind ungültig und können nicht entfernt werden.", beim Schließen des entschlüsselnden CryptoStreams.
Bei MSDN stand, dass eine mögliche Ursache sein könnte, dass der Key oder der IV beim Verschlüsseln ein anderer ist, als beim Entschlüsseln.
Aber das kann nicht sein, da hier beides mal das gleiche verwendet wird.
In diversen Foren kommen alle möglichen Wrapper, die alle das selbe machen, wie der Code hier.
Ich finde auch, dass das alles extrem umständlich gemacht wurde. Warum nicht einfach:
Hat jemand Ideen, woran der Fehler liegen könnte?
Ich habe hier ein Problem mit der System.Security.Cryptography.RijndaelManaged bzw. AesManaged.
Und zwar kommt eine CryptographicException mit der Message "Zeichenabstände sind ungültig und können nicht entfernt werden.", beim Schließen des entschlüsselnden CryptoStreams.
VB.NET-Quellcode
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Dim Input As Byte() = System.Text.Encoding.Default.GetBytes(TextBox_Input.Text)
- Dim Crypted As Byte()
- Dim Output As Byte()
- Dim pdb As New System.Security.Cryptography.Rfc2898DeriveBytes(TextBox_Password.Text, New Byte() {&H49, &H76, &H61, &H6E, &H20, &H4D, &H65, &H64, &H76, &H65, &H64, &H65, &H76})
- Dim TempKey As Byte() = pdb.GetBytes(32)
- Dim TempIV As Byte() = pdb.GetBytes(16)
- Using Rijndael As New System.Security.Cryptography.RijndaelManaged With {.Key = TempKey, .IV = TempIV, .Mode = System.Security.Cryptography.CipherMode.CBC}
- Dim msEn As New System.IO.MemoryStream
- Dim csEn As New System.Security.Cryptography.CryptoStream(msEn, Rijndael.CreateEncryptor(TempKey, TempIV), Security.Cryptography.CryptoStreamMode.Write)
- csEn.Write(Input, 0, Input.Length)
- Crypted = msEn.ToArray
- csEn.Close()
- msEn.Close()
- Dim msDe As New System.IO.MemoryStream
- Dim csDe As New System.Security.Cryptography.CryptoStream(msDe, Rijndael.CreateDecryptor(TempKey, TempIV), Security.Cryptography.CryptoStreamMode.Write)
- csDe.Write(Crypted, 0, Crypted.Length)
- Output = msDe.ToArray
- csDe.Close() 'Hier die Exception
- msDe.Close()
- End Using
- TextBox_Output.Text = System.Text.Encoding.Default.GetString(Output)
- End Sub
Bei MSDN stand, dass eine mögliche Ursache sein könnte, dass der Key oder der IV beim Verschlüsseln ein anderer ist, als beim Entschlüsseln.
Aber das kann nicht sein, da hier beides mal das gleiche verwendet wird.
In diversen Foren kommen alle möglichen Wrapper, die alle das selbe machen, wie der Code hier.
Ich finde auch, dass das alles extrem umständlich gemacht wurde. Warum nicht einfach:
Hat jemand Ideen, woran der Fehler liegen könnte?
"Luckily luh... luckily it wasn't poi-"
-- Brady in Wonderland, 23. Februar 2015, 1:56
Desktop Pinner | ApplicationSettings | OnUtils
-- Brady in Wonderland, 23. Februar 2015, 1:56
Desktop Pinner | ApplicationSettings | OnUtils