Шифрование файлов на флешке - Visual Basic .NET
Формулировка задачи:
как программно зашифровать файлы ? есть флешка , на ней месседжер (клиент) нужно что бы программа зашифровала к чертям файлы на ней или как то заблокировала доступ к флешке , и разрешала доступ к флешке (или файлам) только после ввода пароля в этой же программе? я вроде все рублю и по поводу пароля реализовать могу ... интересно только шифрование , мож завалялся у кого то код что шифрует фалы...не важно как ...там глвное продемонстрироват процесс шифрования =)
Решение задачи: «Шифрование файлов на флешке»
textual
Листинг программы
- NotInheritable Class RijndaelHelper
- Private Sub New()
- End Sub
- Public Shared Sub EncryptFile(filePath As String, password As String)
- Dim rijndael As RijndaelManaged = Nothing, _
- inStream As FileStream = Nothing, _
- tmpStream As FileStream = Nothing, _
- cryptStream As CryptoStream = Nothing
- Try
- rijndael = GetRijndaelManaged(password)
- inStream = File.OpenRead(filePath)
- Dim tmpPath As String = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString() & ".tmp")
- tmpStream = New FileStream(tmpPath, FileMode.Create, FileAccess.ReadWrite, FileShare.None, 4096, FileOptions.DeleteOnClose)
- cryptStream = New CryptoStream(tmpStream, rijndael.CreateEncryptor(), CryptoStreamMode.Write)
- inStream.CopyTo(cryptStream)
- cryptStream.FlushFinalBlock()
- inStream.Close()
- tmpStream.Position = 0
- Using outStream As New FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None)
- tmpStream.CopyTo(outStream)
- End Using
- Finally
- If tmpStream IsNot Nothing Then tmpStream.Close()
- If cryptStream IsNot Nothing Then cryptStream.Close()
- If inStream IsNot Nothing Then inStream.Close()
- If rijndael IsNot Nothing Then rijndael.Dispose()
- End Try
- End Sub
- Public Shared Sub DecryptFile(filePath As String, password As String)
- Using rijndael As RijndaelManaged = GetRijndaelManaged(password)
- Dim tmpPath As String = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString() & ".tmp")
- Using tmpStream As New FileStream(tmpPath, FileMode.Create, FileAccess.ReadWrite, FileShare.None, 4096, FileOptions.DeleteOnClose)
- Using inStream As FileStream = File.OpenRead(filePath)
- Using cryptStream As New CryptoStream(inStream, rijndael.CreateDecryptor(), CryptoStreamMode.Read)
- cryptStream.CopyTo(tmpStream)
- End Using
- End Using
- tmpStream.Position = 0
- Using outStream As New FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None)
- tmpStream.CopyTo(outStream)
- End Using
- End Using
- End Using
- End Sub
- Shared Function GetRijndaelManaged(password As String) As RijndaelManaged
- Dim rijndael As New RijndaelManaged
- 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}
- Using deriveBytes As New Rfc2898DeriveBytes(Encoding.Unicode.GetBytes(password), salt, 3961)
- rijndael.Key = deriveBytes.GetBytes(rijndael.KeySize\8)
- rijndael.IV = deriveBytes.GetBytes(rijndael.BlockSize\8)
- End Using
- Return rijndael
- End Function
- End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д