⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 实现DES加密文件的功能
💻 CS
字号:
using System;
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Security;
using System.Security.Cryptography;
using System.IO;
using System.Text;

namespace 文件加密
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (this.textBox1.Text != "" && this.textBox2.Text != "")
            {

                statusBar1.Visible = true;
                statusBar1.Text = "正在加密文件,请等待.....";



                if (EncryptFile(this.textBox1.Text, this.textBox2.Text, this.key()))
                {
                    statusBar1.Text = "加密完成。";
                    MessageBox.Show("加密成功!");
                }
                statusBar1.Visible = false;

            }
            else
            {
                MessageBox.Show("文件路径不能为空");
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (this.textBox1.Text != "" && this.textBox2.Text != "")
            {
                statusBar1.Visible = true;
                statusBar1.Text = "正在解密文件,请等待.....";
                if (DecryptFile(this.textBox1.Text, this.textBox2.Text, this.key()))
                {
                    statusBar1.Text = "解密完成。";

                    MessageBox.Show("解密成功!");

                }
                statusBar1.Visible = false;
            }
            else
            {
                MessageBox.Show("文件路径不能为空");
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
            openFileDialog1.ShowDialog();
            string filename = openFileDialog1.FileName;
            int i = filename.LastIndexOf(".");
            if (i != -1)
            {
                string filetype = filename.Substring(filename.LastIndexOf("."));
                if (this.radioButton1.Checked)
                {
                    filename = filename.Replace("(解密文件)", "");
                    textBox2.Text = filename.Substring(0, filename.LastIndexOf(".")) + "(加密文件)" + filetype;
                }
                else
                {
                    filename = filename.Replace("(加密文件)", "");
                    textBox2.Text = filename.Substring(0, filename.LastIndexOf(".")) + "(解密文件)" + filetype;

                }
            }
            if (filename != "")
            {
                textBox1.Text = openFileDialog1.FileName;

            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            saveFileDialog1.ShowDialog();
            if (saveFileDialog1.FileName != "")
            {
                this.textBox2.Text = saveFileDialog1.FileName;
            }
        }
        /// <summary>
        /// 加密
        /// </summary>
        /// <param name="filePath">输入路径</param>
        /// <param name="savePath">输出路径</param>
        /// <param name="keyStr">密钥</param>
        /// <returns></returns>
        public bool EncryptFile(string filePath, string savePath, string keyStr)
        {
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            if (keyStr == "")
                MessageBox.Show("请输入密钥!");
            FileStream fs = File.OpenRead(filePath);
            byte[] inputByteArray = new byte[fs.Length];
            fs.Read(inputByteArray, 0, (int)fs.Length);
            fs.Close();
            byte[] keyByteArray = Encoding.Default.GetBytes(keyStr);

            des.Key = keyByteArray;
            des.IV = keyByteArray;
            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();
            fs = File.OpenWrite(savePath);
            foreach (byte b in ms.ToArray())
            {
                fs.WriteByte(b);

            }
            fs.Close();
            cs.Close();
            ms.Close();
            return true;
        }
        /// <summary>
        /// 解密
        /// </summary>
        /// <param name="filePath">输入路径</param>
        /// <param name="savePath">输出路径</param>
        /// <param name="keyStr">密钥</param>
        /// <returns>string</returns>
        public bool DecryptFile(string filePath, string savePath, string keyStr)
        {

            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            if (keyStr == "")
                MessageBox.Show("请输入密钥!");
            FileStream fs = File.OpenRead(filePath);
            byte[] inputByteArray = new byte[fs.Length];
            fs.Read(inputByteArray, 0, (int)fs.Length);
            fs.Close();
            byte[] keyByteArray = Encoding.Default.GetBytes(keyStr);

            des.Key = keyByteArray;
            des.IV = keyByteArray;
            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();
            fs = File.OpenWrite(savePath);
            foreach (byte b in ms.ToArray())
            {
                fs.WriteByte(b);
            }
            fs.Close();
            cs.Close();
            ms.Close();
            return true;
        }



        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {

            if (radioButton1.Checked == true)
            {
                this.button3.Enabled = true;
                this.button4.Enabled = false;
                textBox3.Text = null;
                textBox1.Text = "";
                textBox2.Text = "";
            }
        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            if (radioButton2.Checked == true)
            {
                this.button3.Enabled = false;
                this.button4.Enabled = true;
                textBox3.Text = null;
                textBox1.Text = "";
                textBox2.Text = "";
            }
        }
        /// <summary>
        /// 产生密钥
        /// </summary>
        /// <returns>string</returns>
        public string key()
        {
            if (textBox3.Text == "")
                MessageBox.Show("请输入密钥");
            string keyString = textBox3.Text;
            if (keyString.Length > 8)
            {
                return keyString.Substring(0, 8);
            }
            if (keyString.Length < 8)
            {
                int i = 8 - keyString.Length;
                for (int n = 1; n <= i; n++)
                {
                    keyString += " ";
                }
                return keyString;
            }
            return keyString;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -