C#加密实现

大一刚学完C++,然后立志做一个尽心尽职的软狗,学习C#(.net)比必经之路。
C++刚学完文件系统,然后就找了一个C#的文件系统应用的例子,就是文件的加密与解密。

首先要进行文件与文件夹操作就必须引入System.IO命名空间
这个例子主要使用了File类和MemoryStream类

类功能介绍
File:提供用于创建、复制、删除、移动、和打开文件的静态方法,并协助FileStream对象
MemoryStream:创建其支持储存区为内存的流

其次进行加密与解密操作,使用DES加密的话就必须引入System.Security.Cryptography命名空间类
System.Security.Cryptography 命名空间提供加密服务,包括安全的数据编码和解码,以及许多其他操作,例如散列法、随机数字生成和消息身份验证。其中DES加密为其中一个加密算法

程序的实现思路主要是:先读取已有文件,然后随机生成密钥和初始化向量,创建一个内存流,用密钥加密文件并把加密结果存入内存流,然后把内存流的数据写入加密文件。(这个例子中加密后明文数据依然存在)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Security.Cryptography;

namespace encrypt
{
    class Program
    {
        static void Main(string[] args)
        {
            FileStream file = File.OpenRead("300 Classic example.txt");
            byte[] fileArray = new byte[file.Length];
            file.Read(fileArray, 0, fileArray.Length);
            file.Close();

            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            des.GenerateKey();
            des.GenerateIV();
            Console.WriteLine("DES加密密钥为:");
            foreach (var item in des.Key) Console.Write(string.Format("0:X2",item));
            Console.WriteLine("\nDES加密初始化向量为:");
            foreach (var item in des.IV)    Console.Write(string.Format("{0:X2}",item));
            FileStream filekey = File.Create("Key");
            filekey.Write(des.Key, 0, des.Key.Length);
            filekey.Close();

            MemoryStream memorystream = new MemoryStream();
            CryptoStream cryptostream = new CryptoStream(memorystream, des.CreateEncryptor(), CryptoStreamMode.Write);
            cryptostream.FlushFinalBlock();
            FileStream fileencrypt = File.Create("300 Classic example.encrypt");

            foreach (byte value in memorystream.ToArray()) fileencrypt.WriteByte(value);
            fileencrypt.Close();
            cryptostream.Close(); 
            memorystream.Close();
        }
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值