2016-11-22 7 views
-1

Шифрование и дешифрование для одного текстового файла, используя следующий код работает:Как шифровать и дешифровать несколько текстовых и графических файлов в папках

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles SelectFile.Click 

    'Create a File Dialog Box to select the source file 
    Dim dlg As New OpenFileDialog 
    'If OK Button is Click then add file name with path to textBox1 
    If dlg.ShowDialog() = DialogResult.OK Then 
     TextBox1.Text = dlg.FileName 
    End If 
End Sub 
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Encrypt.Click 
    Dim outputFile As String 
    outputFile = "M:\Encryptions\Encrypted.txt" 
    Dim fsInput As New FileStream(TextBox1.Text, FileMode.Open, FileAccess.Read) 
    Dim fsEncrypted As New FileStream(outputFile, FileMode.Create, FileAccess.Write) 
    Dim sKey As String 
    sKey = "Helloabc" 

    Dim DES As New DESCryptoServiceProvider 
    DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey) 
    DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey) 
    Dim desencrypt As ICryptoTransform 
    desencrypt = DES.CreateEncryptor() 

    Dim cryptostream As New CryptoStream(fsEncrypted, desencrypt, CryptoStreamMode.Write) 
    Dim bytearrayinput(fsInput.Length) As Byte 
    fsInput.Read(bytearrayinput, 0, bytearrayinput.Length) 
    cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length) 
    cryptostream.Close() 
    fsInput.Close() 
    fsEncrypted.Close() 
    TextBox2.Text = "M:\Encryptions\Encrypted.txt" 
End Sub 
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Decrypt.Click 
    Dim DES As New DESCryptoServiceProvider 
    Dim sKey As String 
    sKey = "Helloabc" 
    DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey) 
    DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey) 
    Dim fsread As New FileStream(TextBox2.Text, FileMode.Open, FileAccess.Read) 
    Dim desdecrypt As ICryptoTransform 
    desdecrypt = DES.CreateDecryptor() 

    Dim cryptostreamDecr As New CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read) 
    Dim fsDecrypted As New StreamWriter("M:\Decryptions\Decrypted.txt") 
    fsDecrypted.Write(New StreamReader(cryptostreamDecr).ReadToEnd()) 
    fsDecrypted.Flush() 
    fsDecrypted.Close() 
    TextBox3.Text = "M:\Decryptions\Decrypted.txt" 
End Sub 

Однако при попытке зашифровать/расшифровать несколько файлов, оригинальный выход файл шифрования/дешифрования («Encrypted.txt») будет заменен новым выходом.

Как создать цикл для создания нескольких зашифрованных файлов с разными именами файлов?

ответ

0

Использование счетчика: 0, 1, 2, 3, 4 ... Добавлять счетчик к имени файла и шаг счетчика после каждого файла написано:

Encrypted00.dat 
Encrypted01.dat 
Encrypted02.dat 
Encrypted03.dat 
... 

Это, вероятно, ошибкой называть зашифрованные файлы .txt, поскольку они не будут текстовыми. Это двоичные данные. Если вы хотите, чтобы они были в виде текста, вам нужно будет преобразовать в формат Base64 и преобразовать обратно в двоичные данные перед расшифровкой.

В качестве альтернативы, запишите все файлы в каталоге в один файл и зашифруйте этот единственный файл.