Hallo,
ich habe folgendes Problem:
Wenn ich eine Datei verschlüssele und wieder entschlüssele hab ich folgendes Problem
Das Resultat ist fast richtig, jedoch ersetzt er die ersten 10-15 zeichen mit kryptischen Zeichenfolgen, die aussehen als wären sie noch aus der Verschlüsselung übrig geblieben.
z.B.
Vor der Verschlüssslung:
DPASKPAKSDPAKSDPOKSADPKASPDKPSADO
ASDÜASKD
ASDKp
aSKDpaKSDPKASPDKAPSDKPOASKDPOASKDPOKSADPOKASDPKASD+pasDK*P*Ds
ad
23
1234$"§$§"%$$§"%"§$"§$%"§%"§$)Z $!="$ !"?$
!"§$*"!*$' "' Nach der Entschlüsselung:
8222;Û¨Ô*ÇÂd9376;8226;8249;e8222;<|qý$ñ8216;¹|ñ8249;öDPA_
SKPAKSDPAKSDPOKSADPKASPDKPSADO
ASDÜASKD
ASDKp
aSKDpaKSDPKASPDKAPSDKPOASKDPOASKDPOKSADPOKASDPKASD+pasDK*P*Ds
ad
23
1234$"§$§"%$$§"%"§$"§$%"§%"§$)Z $!="$ !"?$
!"§$*"!*$' "' Weis jemand eine Lösung?
Zum Ver- und Entschlüsseln benutze ich folgenden Code:
Verschlüsseln:
Public Shared Sub EncryptFile(ByVal sSource As String, ByVal sTarget As _
String, Optional ByVal BufferSize As Long = 4096)
Dim ErrorHappened As Boolean = False
Dim OldFileStream As FileStream
Dim NewFileStream As FileStream
Dim CrypStream As CryptoStream
Try
Dim key As String = "mypw"
Dim RijndaelManaged As New RijndaelManaged
RijndaelManaged.Key = SecurityFunctions.GetPasswordHashInBytes(key)
OldFileStream = New FileStream(sSource, FileMode.Open)
NewFileStream = New FileStream(sTarget, FileMode.Create)
RijndaelManaged.GenerateIV()
NewFileStream.Write(RijndaelManaged.IV, 0, RijndaelManaged.IV.Length)
CrypStream = New CryptoStream(NewFileStream, _
RijndaelManaged.CreateEncryptor, CryptoStreamMode.Write)
Dim Data(BufferSize) As Byte
Dim Buffer As Long
Dim BufferCount As Long
Dim FileLen As Long = OldFileStream.Length
Do
If BufferCount >= FileLen - BufferSize Then
ReDim Data(FileLen - BufferCount)
Buffer = OldFileStream.Read(Data, 0, FileLen - BufferCount)
CrypStream.Write(Data, 0, Buffer)
Exit Do
End If
Buffer = OldFileStream.Read(Data, 0, BufferSize)
CrypStream.Write(Data, 0, BufferSize)
BufferCount += Buffer
Loop
CrypStream.Close()
Catch ex As Exception
MsgBox("Fehler beim Verschlüsseln!" & vbCrLf & ex.Message)
ErrorHappened = True
Finally
NewFileStream.Close()
OldFileStream.Close()
End Try
If ErrorHappened Then
My.Computer.FileSystem.DeleteFile(sTarget)
End If
End Sub Entschlüsseln:
Public Shared Sub DecryptFile(ByVal sSource As String, ByVal sTarget As _
String, Optional ByVal BufferSize As Long = 4096)
Dim ErrorHappened As Boolean = False
Dim OldFileStream As FileStream
Dim NewFileStream As FileStream
Dim CrypStream As CryptoStream
Try
OldFileStream = New FileStream(sSource, FileMode.Open)
NewFileStream = New FileStream(sTarget, FileMode.Create)
Dim RijndaelManaged As New RijndaelManaged()
Dim iv() As Byte
ReDim iv(RijndaelManaged.IV.Length - 1)
NewFileStream.Write(RijndaelManaged.IV, 0, RijndaelManaged.IV.Length)
RijndaelManaged.IV = iv
CrypStream = New CryptoStream(OldFileStream, _
RijndaelManaged.CreateDecryptor( _
SecurityFunctions.GetPasswordHashInBytes("mypw"), _
RijndaelManaged.IV), CryptoStreamMode.Read)
Dim Data(BufferSize) As Byte
Dim Buffer As Long
Dim BufferCount As Long
Dim FileLen As Long = OldFileStream.Length
Do
If BufferCount >= FileLen - BufferSize Then
ReDim Data(FileLen - BufferCount)
Buffer = CrypStream.Read(Data, 0, FileLen - BufferCount)
NewFileStream.Write(Data, 0, Buffer)
Exit Do
End If
Buffer = CrypStream.Read(Data, 0, BufferSize)
NewFileStream.Write(Data, 0, BufferSize)
BufferCount += Buffer
Loop
CrypStream.Close()
Catch ex As Exception
MsgBox("Entschlüsselung fehlgeschlagen!" & vbCrLf & ex.Message)
ErrorHappened = True
Finally
NewFileStream.Close()
OldFileStream.Close()
End Try
If ErrorHappened Then
My.Computer.FileSystem.DeleteFile(sTarget)
End If
End Sub Bei Google finde ich nur den Hinweis, dass eventuell etwas mit dem IV nicht stimmt. Vll kann mir jemand sagen ob es bei mir daran liegt. |