天天看點

C#對檔案的位元組加密/解密-可逆

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

using System.Threading;

namespace 檔案加密

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        private void btn_Encode_Click(object sender, EventArgs e)

            Thread th1 = new Thread(new ThreadStart(EncodingFile));

            th1.Start();

        private void EncodingFile()

            string inf = @txt_source.Text;//源檔案位址

            string outf = @txt_des.Text;//目的檔案位址

            FileInfo fi = new FileInfo(inf);

progressBar1.Maximum = (int)fi.Length;

            using (FileStream outstream = new FileStream(@outf, FileMode.Create))

            {

                using (FileStream fs = new FileStream(@inf, FileMode.Open))

                {

                    byte[] bytes = new byte[1024 * 1024 * 10];//10MB

                    int readlength;

                    while ((readlength = fs.Read(bytes, 0, bytes.Length)) > 0)

                    {

                        for (int i = 0; i < readlength; i++)

                        {

                            bytes[i] = (byte)(byte.MaxValue - bytes[i]);

                        }

                        outstream.Write(bytes, 0, readlength);

                       progressBar1.Value += readlength;

                    }

                }

            }

            MessageBox.Show("加密完成,重複此過程即可解密!");

    }

}