博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
步步为营-17-FileStream-文件加密/解密
阅读量:5232 次
发布时间:2019-06-14

本文共 3346 字,大约阅读时间需要 11 分钟。

以前使用的File是操作小的文本文件,用的并不常见,FileStream(操作字节),可以操作所有格式的文件,用途较广泛

下面做一个通过文件流给文件加密解密的小软件. 

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace 文件加密{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void btnFile_Click(object sender, EventArgs e)        {            OpenFileDialog ofd = new OpenFileDialog();            ofd.Title = "请选择要加密的文件";            //初始路径            ofd.InitialDirectory = @"C:\Users\home\Desktop";            ofd.Filter = "所有文件|*.*";            ofd.ShowDialog();            txtFile.Text = ofd.FileName;        }        private void btnCode_Click(object sender, EventArgs e)        {            SaveFileDialog sfd = new SaveFileDialog();            sfd.Title = "请选择要保存文件的路径";            sfd.InitialDirectory = @"C:\Users\home\Desktop";            sfd.Filter = "所有文件|*.*";            sfd.ShowDialog();            txtCodeFile.Text = sfd.FileName;            //调用方法            MakeCode( "加密");        }        private void btnUnCode_Click(object sender, EventArgs e)        {            SaveFileDialog sfd = new SaveFileDialog();            sfd.Title = "请选择要保存文件的路径";            sfd.InitialDirectory = @"C:\Users\home\Desktop";            sfd.Filter = "所有文件|*.*";            sfd.ShowDialog();            txtCodeFile.Text = sfd.FileName;            //调用方法            MakeCode("解密");        }        public void MakeCode(string content)         {            //1 先读取文件            using (FileStream fsRead = new FileStream(txtFile.Text.Trim(), FileMode.OpenOrCreate, FileAccess.Read))            {                using (FileStream fsWrite = new FileStream(txtCodeFile.Text.Trim(), FileMode.OpenOrCreate, FileAccess.Write))                {                    //设置进度条                    progressBar1.Maximum = (int)fsRead.Length;                    byte[] buffer = new byte[1024 * 1024 * 5];                    while (true)                    {                        int r = fsRead.Read(buffer, 0, buffer.Length);                        if (r == 0)                        {                            break;                        }                        byte passWord = 0;                        if (byte.TryParse(txtPassword.Text.Trim(), out passWord)&& content.Equals("加密"))                        {                            for (int i = 0; i < buffer.Length; i++)                            {                                buffer[i] += passWord;                            }                        }                        if (byte.TryParse(txtPassword.Text.Trim(), out passWord) && content.Equals("解密"))                        {                            for (int i = 0; i < buffer.Length; i++)                            {                                buffer[i] -= passWord;                            }                        }                        fsWrite.Write(buffer, 0, r);                        progressBar1.Value = (int)fsWrite.Length;                    }                }                MessageBox.Show("保存成功!");            }        }                 }}
View Code

1 将普通视频文件通过此工具加密

2 现在打开文件

3 解密成功后打开文件

 

转载于:https://www.cnblogs.com/YK2012/p/6719597.html

你可能感兴趣的文章
实现对称加密及非对称公钥加密
查看>>
Oracle Null 与 in, exists 的关系说明(not in 查不到结果)
查看>>
一个vue小demo购物车
查看>>
javascript 获取滚动条高度+常用js页面宽度与高度[转]
查看>>
nexus admin 从文件角度进行密码重置
查看>>
2012TI杯电子设计大赛
查看>>
[教程]Delphi 中三种回调函数形式解析
查看>>
HeatMap(热图)的原理和实现
查看>>
[转]室友靠打游戏拿30万offer,秘密竟然是……
查看>>
linux下python2.7.x版本安装
查看>>
Laravel5.5 GraphQL 为应用程序构建API
查看>>
IOS框架和服务
查看>>
[转]快速排序 挖坑讲解方法
查看>>
[转]STL之list容器详解
查看>>
python 创建虚拟环境时报错OSError, setuptools下载失败
查看>>
BZOJ 1005 [HNOI2008]明明的烦恼 ★(Prufer数列)
查看>>
POSIX 线程 – pthread_sigmask
查看>>
基于octree的空间划分及搜索操作
查看>>
Redis--初识Redis
查看>>
[ZJOI2005]午餐 (贪心,动态规划)
查看>>