Hallo zusammen! Ich habe ein kleines Programm gebastelt, mit dem ich Dateien ver- / entschlüsseln kann. Jetzt habe ich nur ein kleines Problem! Wenn ich eine Datei verschlüsselt habe, erhält diese z.B. die Dateiendung *.abc. Nun möchte ich natürlich, dass der Dateiname, die Dateiendung und eventuell noch eine Prüfsumme mit gespeichert werden. D.h. lese ich die Datei wieder ein soll automatisch der Originaldateiname und die Dateierweiterung ausgelesen werden.
Wie mache ich das am Besten, wenn ich die Datei mit dieser Funktion ver- / entschlüsselt wird:
Verschlüsselung:
Public Function EncryptFile(ByVal sSource As String, ByVal sTarget As _
String, ByVal sPassword As String, Optional ByVal BufferSize As Long = _
4096) As Boolean
Try
Dim sKey As Byte() = (New UnicodeEncoding).GetBytes( _
sPassword.PadRight(8, "*"))
Dim OldFileStream As New FileStream(sSource, FileMode.Open)
Dim NewFileStream As New FileStream(sTarget, FileMode.Create)
Dim RijndaelManaged As New RijndaelManaged
Dim CryptoStream As New CryptoStream(NewFileStream, _
RijndaelManaged.CreateEncryptor(sKey, sKey), _
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)
CryptoStream.Write(Data, 0, Buffer)
Exit Do
End If
Buffer = OldFileStream.Read(Data, 0, BufferSize)
CryptoStream.Write(Data, 0, BufferSize)
BufferCount += Buffer
Loop
OldFileStream.Close()
CryptoStream.Close()
NewFileStream.Close()
Catch
Return False
End Try
Return True
End Function Entschlüsselung:
Imports System.Security.Cryptography
Imports System.IO
Imports System.Text
Public Function DecryptFile(ByVal sSource As String, ByVal sTarget As String, _
ByVal sPassword As String, Optional ByVal BufferSize As Long = 4096) As _
Boolean
Try
Dim sKey As Byte() = (New UnicodeEncoding).GetBytes(sPassword.PadRight( _
8, "*"))
Dim OldFileStream As New FileStream(sSource, FileMode.Open)
Dim NewFileStream As New FileStream(sTarget, FileMode.Create)
Dim RijndaelManaged As New RijndaelManaged
Dim CryptoStream As New CryptoStream(OldFileStream, _
RijndaelManaged.CreateDecryptor(sKey, sKey), 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 = CryptoStream.Read(Data, 0, FileLen - BufferCount)
NewFileStream.Write(Data, 0, Buffer)
Exit Do
End If
Buffer = CryptoStream.Read(Data, 0, BufferSize)
NewFileStream.Write(Data, 0, BufferSize)
BufferCount += Buffer
Loop
NewFileStream.Close()
CryptoStream.Close()
OldFileStream.Close()
Catch
Return False
End Try
Return True
End Function |