【C#学习之路】练手小项目之——文件加密机


下面是文件加密和解密功能的代码

using System.Security.Cryptography;
//加密
        public  void EncryptFile(string filePath, string savePath, string keyStr)
        {
            try
            {
                //通过des加密  
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                //通过流打开文件  
                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);
                //计算指定字节组指定区域哈希值  
                SHA1 ha = new SHA1Managed();
                byte[] hb = ha.ComputeHash(keyByteArray);
                //加密密钥数组  
                byte[] sKey = new byte[8];
                //加密变量 
                byte[] sIV = new byte[8];
                for (int i = 0; i < 8; i++)
                    sKey[i] = hb[i];
                for (int i = 8; i < 16; i++)
                    sIV[i - 8] = hb[i];
                //获取加密密钥  
                des.Key = sKey;
                //设置加密初始化向量  
                des.IV = sIV;
                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();
            }
            catch
            {
                System.Windows.Forms.MessageBox.Show("加密失败");
                progressBar1.Value = 0;
            }

        }

----------------------------------------------------------------------------------------------------------------------------------------------

//解密

        public  void DecryptFile(string filePath, string savePath, string keyStr)
        {
            try
            {
                //通过des解密  
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                //通过流读取文件  
                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);
                //定义哈希变量  
                SHA1 ha = new SHA1Managed();
                //计算指定字节组指定区域哈希值 
                byte[] hb = ha.ComputeHash(keyByteArray);
                //加密密钥数组 
                byte[] sKey = new byte[8];
                //加密变量  
                byte[] sIV = new byte[8];
                for (int i = 0; i < 8; i++)
                    sKey[i] = hb[i];
                for (int i = 8; i < 16; i++)
                    sIV[i - 8] = hb[i];
                //获取加密密钥  
                des.Key = sKey;
                //加密变量  
                des.IV = sIV;
                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();
            }


            catch
            {
                System.Windows.Forms.MessageBox.Show("解密失败");
                progressBar1.Value = 0;
            }
        }


完整项目下载地址:

http://download.csdn.net/detail/wang03989/9620188

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值