以前使用的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[ * * ];
while (true)
{
int r = fsRead.Read(buffer, , buffer.Length);
if (r == )
{
break;
}
byte passWord = ;
if (byte.TryParse(txtPassword.Text.Trim(), out passWord)&& content.Equals("加密"))
{
for (int i = ; i < buffer.Length; i++)
{
buffer[i] += passWord;
}
}
if (byte.TryParse(txtPassword.Text.Trim(), out passWord) && content.Equals("解密"))
{
for (int i = ; i < buffer.Length; i++)
{
buffer[i] -= passWord;
}
} fsWrite.Write(buffer, , r);
progressBar1.Value = (int)fsWrite.Length;
}
}
MessageBox.Show("保存成功!");
}
} }
}

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

2 现在打开文件

3 解密成功后打开文件

步步为营-17-FileStream-文件加密/解密的更多相关文章

  1. linux环境下给文件加密/解密的方法

      原文地址:linix环境下给文件加密/解密的方法 作者:oracunix 一. 利用 vim/vi 加密:优点:加密后,如果不知道密码,就看不到明文,包括root用户也看不了:缺点:很明显让别人知 ...

  2. android 中文件加密 解密 算法实战

    现在项目里面有一个需求,本项目里面下载的视频和文档都不允许通过其他的播放器播放,在培训机构里面这样的需求很多.防止有人交一份钱,把所有的课件就拷给了别人.这样的事情培训机构肯定是不愿意的.现在我项目里 ...

  3. linux 使用vim文件加密/解密的方法

    一. 利用 vim/vi 加密:优点:加密后,如果不知道密码,就看不到明文,包括root用户也看不了:缺点:很明显让别人知道加密了,容易让别人把加密的文件破坏掉,包括内容破坏和删除: vi编辑器相信大 ...

  4. Spring boot RSA 文件加密解密

    github项目地址 rsa_demo ##测试 加密D:/hello/test.pdf 文件,生成加密后的文件 testNeedDecode.pdf 对testNeedDecode.pdf 文件进行 ...

  5. 微信小程序(17)-- RSA加密 解密 加签 验签

    RSA加密 解密 加签 验签 /** * 注:区分RSA私钥的类型,有pkcs1和pkcs8.pkcs8格式的私钥主要用于Java中 pkcs1格式: -----BEGIN RSA PRIVATE K ...

  6. 文件加密 解密 pdftk openssl gpg vim

    openssl加密和解密 . openssl des -salt -in file -out file.des openssl des -d -salt -in file.des -out file ...

  7. ABAP文件加密解密-PGP

    1.SM69创建命令 2.解密 DATA: lv_para = '--passphrase (key) -o /oracle/sfdata/sfdata.csv -d /oracle/sfdata/s ...

  8. php文件加密解密

    利用base64加解密 base64_encode是加密,而base64_decode是解密 语法:string base64_encode(string data);   语法:string bas ...

  9. C#做的一个加密/解密的类

    转自:http://www.16aspx.com/Article/3904 using System; using System.Security.Cryptography; using System ...

随机推荐

  1. 解决vue <router-link>在IE与火狐上点击失效(路由不跳转)问题

    <router-link to="/GoAbroad"> </router-link> vue中的<router-link>这种声明式的路由方式 ...

  2. UVA - 12487 Midnight Cowboy(LCA+思维)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  3. Linux之Ubuntu安装Sublime

    0.控制台下开启并使用: 为什么先说这一步呢?确实很尴尬,对不对.但确实,当初就是安装好了都不知道咋个用,就是这么蠢...hahahahahahahha 命令行:subl 注意:不是sub,也不是su ...

  4. webstorm11.0.3连接ftp

    一.工具 webstorm11.0.3 ftp工具:Beyond Compare 3 二.步骤 1.打开项目工程,按照下图中路径,打开ftp配置界面 2.在ftp配置界面 (1)右上角+号新建配置,选 ...

  5. char *a与char a[n]的区别

    char *a='ab';//a[2]一定为'\0',但是,a[5]这样的指针越界不会报错 char a[3] = {'a','a','a'};//a[3]属于越界,会报错 char b[5]={'b ...

  6. mysql 开源~canal的深度解读1

    一 简介:经过一段时间的研究,对canal有了一些见解 二 配置文件: 1 canal.properties (系统根配置文件)     主要参数列表   canal.properties (系统根配 ...

  7. swift学习第一天---常量变量基础数据类型

    import Foundation /** * 1.常量 变量 知识要点:常量的定义用let 变量的定义用var 常量一旦定义便不可再更改. 变量定义之后可以在定义之后的程序中任意地方进行修改. */ ...

  8. js 鼠标拖拽元素

    基础知识 event.clientX.event.clientY 鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条.IE事件和标准事件都定义了这2个属性 event. ...

  9. 【Mysql sql inject】【入门篇】sqli-labs使用 part 4【18-20】

    这几关的注入点产生位置大多在HTTP头位置处 常见的HTTP注入点产生位置为[Referer].[X-Forwarded-For].[Cookie].[X-Real-IP].[Accept-Langu ...

  10. Libevent源码分析—从使用Libevent库开始

    练习libevent库的使用,主要是几个API的调用顺序.根据event.h的开头注释部分可知,要使用libevent库,主要的几个API及调用顺序为:         event_base()初始化 ...