步步为营-17-FileStream-文件加密/解密

以前使用的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("保存成功!");
            }
        }

    }
}

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

2 现在打开文件

3 解密成功后打开文件

时间: 2024-10-28 09:18:31

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

java 文件加密解密

1 package com.test; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.InputStream; 7 import java.io.OutputStream; 8 import java.security.KeyPair; 9 import java.security.KeyPairGenerator; 10

文件加密解密全解

using System.Security.Cryptography;using System.IO;using System.Text;using System;using System.Collections.Generic;using System.Windows.Forms;namespace KingBoy.KBFileCryp{    /// <summary>    /// 文件加密    /// </summary>    class CrypToFile    {

对文件加密解密算法设计

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Security.Cryptography;

Linux安全机制之文件加密解密

[何为加密解密] 加密:就是把明文转换成密文的过程,是使用某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容. 解密:就是把密文转换成明文的过程,授权用户通过使用与密文加密相对应的算法转译出明文. [常用密码算法和协议] 对称加密:同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密: 常用的对称加密算法:DES (56).3DES.AES (128,192,256,384,512).Blowfish.Twofish.

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

现在项目里面有一个需求,本项目里面下载的视频和文档都不允许通过其他的播放器播放,在培训机构里面这样的需求很多.防止有人交一份钱,把所有的课件就拷给了别人.这样的事情培训机构肯定是不愿意的.现在我项目里面也出了这么个需求.下面介绍一下我的实现. 思路: 首先下载文件,这个就不说了,java代码写个下载管理器. 下载完成后存储文件的时候不是直接存储,要加密存储,加密方法是将文件的每个字节与这个字节在流中的下标做异或运算. 在我们项目里面播放的时候要解密,方法也是将文件的每个字节与这个字节在流中的下标

DES加密解密帮助类

public class DESCrypto { /// <summary> /// 初始化des实例秘钥及向量 /// </summary> /// <param name="key"></param> /// <returns></returns> private static DESCryptoServiceProvider InitDESInstance(string key) { DESCryptoSer

RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密

原文:RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密 C#在using System.Security.Cryptography下有 DESCryptoServiceProvider RSACryptoServiceProvider  DESCryptoServiceProvider 是用于对称加密 RSACryptoServiceProvider是用于非对称加密  对称加密的意思:有一个密钥 相当于加密算法,加密用它来加

Android之zip文件加密解压及进度条的实现

zip文件的解压能够使用java的zip库,可是没有实现对加密文件的解压功能,这里能够使用zip4j来实现.详细能够參看该文<Android下zip压缩文件加密解密的完美解决方式>.该文件里没有实现解压进度的功能,这里进行一简单的实现. Zip4jSp.java /** * unzip file to dest dir with password in thread. * * @param zipFile * @param dest * @param passwd * @param chars

RandomAccessFile类进行文件加密

文件加密/解密示例. package io; import java.io.*; public class encrypt { private File file; //存储文件对象信息 byte[] buf;  //缓冲区,存储文件中的所有数据    RandomAccessFile fp; //用参数filename指定的文件构造一个filed对象存储 //同时为缓冲区buf分配与文件长度相等的存储空间 public encrypt(String filename){ file=new Fi