Шифрование файлов на флешке - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д