Шифрование файла - C#

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

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

Всем привет. Есть класс, который шифрует и дешифрует файл. Но проблема с кириллицей, есть ли возможность подключить ее?
    public class Cryptfile
    {
        internal static void Decryptfile(string file, string key, string tempfile)
        {
            FileStream fsFileIn = File.OpenRead(file);
            FileStream fsKeyFile = File.OpenRead(key);
            FileStream fsFileOut = File.Create(tempfile);
            File.SetAttributes(tempfile, FileAttributes.Hidden);
            TripleDESCryptoServiceProvider cryptAlgorithm = new TripleDESCryptoServiceProvider();
            BinaryReader brFile = new BinaryReader(fsKeyFile);
            cryptAlgorithm.Key = brFile.ReadBytes(24);
            cryptAlgorithm.IV = brFile.ReadBytes(8);
            CryptoStream csEncrypt = new CryptoStream(fsFileIn, cryptAlgorithm.CreateDecryptor(), CryptoStreamMode.Read);
            StreamReader srCleanStream = new StreamReader(csEncrypt);
            StreamWriter swCleanStream = new StreamWriter(fsFileOut);
            swCleanStream.Write(srCleanStream.ReadToEnd());
            swCleanStream.Close();
            fsFileOut.Close();
            srCleanStream.Close();
            fsKeyFile.Close();
            fsFileIn.Close();
            csEncrypt.Close();
        }
 
        internal static void Encryptfile(string file,string key,string tempfile)
        {
            FileStream fsFileOut = File.Create(tempfile);
            TripleDESCryptoServiceProvider cryptAlgorithm = new TripleDESCryptoServiceProvider();
            CryptoStream csEncrypt = new CryptoStream(fsFileOut, cryptAlgorithm.CreateEncryptor(), CryptoStreamMode.Write);
            StreamWriter swEncStream = new StreamWriter(csEncrypt);
            StreamReader srFile = new StreamReader(file);
            string currLine = srFile.ReadLine();
            while (currLine != null)
            {
                swEncStream.Write(currLine);
                currLine = srFile.ReadLine();
            }
            srFile.Close();
            swEncStream.Flush();
            swEncStream.Close();
            FileStream fsFileKey = File.Create(key);
            BinaryWriter bwFile = new BinaryWriter(fsFileKey);
            bwFile.Write(cryptAlgorithm.Key);
            bwFile.Write(cryptAlgorithm.IV);
            bwFile.Flush();
            bwFile.Close();
            fsFileOut.Close();
            csEncrypt.Close();
            fsFileKey.Close();
        }
    }

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

textual
Листинг программы
    public class CryptFile
    {
        internal static void DecryptFile<T>(string srcFile, string keyFile, string outFile) where T : SymmetricAlgorithm, new()
        {
            using (T cryptAlgorithm = new T())
            {
                using (FileStream fsKeyFile = File.OpenRead(keyFile))
                using (BinaryReader brFile = new BinaryReader(fsKeyFile))
                {
                    cryptAlgorithm.Key = brFile.ReadBytes(cryptAlgorithm.KeySize >> 3);
                    cryptAlgorithm.IV = brFile.ReadBytes(cryptAlgorithm.BlockSize >> 3);
                }
 
                using (FileStream fsFileOut = File.Create(outFile))
                using (FileStream fsFileIn = File.OpenRead(srcFile))
                using (ICryptoTransform crypto = cryptAlgorithm.CreateDecryptor())
                using (CryptoStream csEncrypt = new CryptoStream(fsFileIn, crypto, CryptoStreamMode.Read))
                    csEncrypt.CopyTo(fsFileOut);
            }
        }
 
        internal static void EncryptFile<T>(string srcFile, string keyFile, string outFile) where T : SymmetricAlgorithm, new()
        {
            using (T cryptAlgorithm = new T())
            {
                using (FileStream fsKeyFile = File.Create(keyFile))
                using (BinaryWriter bwFile = new BinaryWriter(fsKeyFile))
                {
                    bwFile.Write(cryptAlgorithm.Key);
                    bwFile.Write(cryptAlgorithm.IV);
                }
 
                using (FileStream fsFileOut = File.Create(outFile))
                using (FileStream fsFileIn = File.OpenRead(srcFile))
                using (ICryptoTransform crypto = cryptAlgorithm.CreateEncryptor())
                using (CryptoStream csEncrypt = new CryptoStream(fsFileOut, crypto, CryptoStreamMode.Write))
                    fsFileIn.CopyTo(csEncrypt);
            }
        }
    }

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


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

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

14   голосов , оценка 4 из 5
Похожие ответы