Шифрование файлов на флешке - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

как программно зашифровать файлы ? есть флешка , на ней месседжер (клиент) нужно что бы программа зашифровала к чертям файлы на ней или как то заблокировала доступ к флешке , и разрешала доступ к флешке (или файлам) только после ввода пароля в этой же программе? я вроде все рублю и по поводу пароля реализовать могу ... интересно только шифрование , мож завалялся у кого то код что шифрует фалы...не важно как ...там глвное продемонстрироват процесс шифрования =)

Решение задачи: «Шифрование файлов на флешке»

textual
Листинг программы
  1. NotInheritable Class RijndaelHelper
  2.  
  3.     Private Sub New()
  4.     End Sub
  5.    
  6.     Public Shared Sub EncryptFile(filePath As String, password As String)
  7.         Dim rijndael As RijndaelManaged = Nothing, _
  8.             inStream As FileStream = Nothing, _
  9.             tmpStream As FileStream = Nothing, _
  10.             cryptStream As CryptoStream = Nothing
  11.         Try
  12.             rijndael = GetRijndaelManaged(password)
  13.             inStream = File.OpenRead(filePath)
  14.             Dim tmpPath As String = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString() & ".tmp")
  15.             tmpStream = New FileStream(tmpPath, FileMode.Create, FileAccess.ReadWrite, FileShare.None, 4096, FileOptions.DeleteOnClose)
  16.             cryptStream = New CryptoStream(tmpStream, rijndael.CreateEncryptor(), CryptoStreamMode.Write)
  17.             inStream.CopyTo(cryptStream)
  18.             cryptStream.FlushFinalBlock()
  19.             inStream.Close()
  20.  
  21.             tmpStream.Position = 0
  22.             Using outStream As New FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None)
  23.                 tmpStream.CopyTo(outStream)
  24.             End Using
  25.         Finally
  26.             If tmpStream IsNot Nothing Then tmpStream.Close()
  27.             If cryptStream IsNot Nothing Then cryptStream.Close()
  28.             If inStream IsNot Nothing Then inStream.Close()
  29.             If rijndael IsNot Nothing Then rijndael.Dispose()
  30.         End Try
  31.     End Sub
  32.  
  33.     Public Shared Sub DecryptFile(filePath As String, password As String)
  34.         Using rijndael As RijndaelManaged = GetRijndaelManaged(password)
  35.             Dim tmpPath As String = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString() & ".tmp")
  36.             Using tmpStream As New FileStream(tmpPath, FileMode.Create, FileAccess.ReadWrite, FileShare.None, 4096, FileOptions.DeleteOnClose)
  37.                 Using inStream As FileStream = File.OpenRead(filePath)
  38.                     Using cryptStream As New CryptoStream(inStream, rijndael.CreateDecryptor(), CryptoStreamMode.Read)
  39.                         cryptStream.CopyTo(tmpStream)
  40.                     End Using
  41.                 End Using
  42.                
  43.                 tmpStream.Position = 0
  44.                 Using outStream As New FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None)
  45.                     tmpStream.CopyTo(outStream)
  46.                 End Using
  47.             End Using
  48.         End Using
  49.     End Sub
  50.    
  51.     Shared Function GetRijndaelManaged(password As String) As RijndaelManaged
  52.         Dim rijndael As New RijndaelManaged
  53.         Dim salt() As Byte = {87, 79, 33, 13, 167, 124, 225, 79, 190, 102, 218, 228, 91, 128, 101, 62, 68, 70, 144, 191, 219, 103, 208, 185, 228, 95, 91}
  54.         Using deriveBytes As New Rfc2898DeriveBytes(Encoding.Unicode.GetBytes(password), salt, 3961)
  55.             rijndael.Key = deriveBytes.GetBytes(rijndael.KeySize\8)
  56.             rijndael.IV = deriveBytes.GetBytes(rijndael.BlockSize\8)
  57.         End Using
  58.         Return rijndael
  59.     End Function
  60.  
  61. End Class

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут