Hallo ich habe mal wieder ein Problem mit der AES Verschlüsselung^^
Diesmal soll es eine beliebige Datei (Archive) sein... mein Problem ist dabei nicht die Verschlüsselung sondern die Entschlüsselung.
Das Problem ist das die Größe der verschlüsselten Datei von der normalen Datei abweicht da ja der Algorithmus noch einen Block anhängt (Padding)... (bei mir ändert sich dadurch die Größe aber mal um 17 mal um 30 Bytes oder so (unterschiedlich))
Nun brauch ich ja aber zum entschlüsseln ein Byte-Array mit einer festen Größe...
Also ich denke die entschlüsselte Datei sollte genauso groß sein wie die normale Datei (vor dem verschlüsseln) z.B.: vorher=1199, verschlüsselt=1216, entschlüsselt=1199^^
Hier mal mein Beispielcode:
Private Sub EncryptAES()
Dim RdM As New RijndaelManaged
Dim MD5 As New MD5CryptoServiceProvider
Dim Key() As Byte = MD5.ComputeHash(Encoding.UTF8.GetBytes( _
"12345678ab"))
MD5.Clear()
RdM.Key = Key
RdM.GenerateIV()
Dim IV() As Byte = RdM.IV
Dim FRStream As New FileStream("C:\test.zip", FileMode.Open)
Dim Bytes(CInt(FRStream.Length - 1)) As Byte
FRStream.Read(Bytes, 0, Bytes.Length)
FRStream.Close()
Dim FWStream As New FileStream("C:\test.enc", FileMode.Create)
Dim CStream As New CryptoStream(FWStream, RdM.CreateEncryptor, _
CryptoStreamMode.Write)
FWStream.Write(IV, 0, IV.Length)
CStream.Write(Bytes, 0, Bytes.Length)
CStream.FlushFinalBlock()
CStream.Close()
FWStream.Close()
End Sub
Private Sub DecryptAES()
Dim RdM As New RijndaelManaged
Dim RdIVLength As Integer = 16
Dim MD5 As New MD5CryptoServiceProvider
Dim Key() As Byte = MD5.ComputeHash(Encoding.UTF8.GetBytes( _
"12345678ab"))
MD5.Clear()
Dim FRStream As New FileStream("C:\test.enc", FileMode.Open)
Dim IV(15) As Byte
FRStream.Read(IV, 0, RdIVLength)
RdM.IV = IV
RdM.Key = Key
Dim CStream As New CryptoStream(FRStream, RdM.CreateDecryptor, _
CryptoStreamMode.Read)
Dim Bytes(CInt(FRStream.Length - 1)) As Byte
CStream.Read(Bytes, 0, Bytes.Length)
CStream.Close()
FRStream.Close()
Dim FWStream As New FileStream("C:\test1.zip", FileMode.Create)
FWStream.Write(Bytes, 0, Bytes.Length)
FWStream.Close()
End Sub Also gehen tut es so... kann die Datei dannach nur nichtmehr öffnen^^ Ich denke mal das liegt an der Größe^^
MfG Reese |