大一刚学完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();
}
}
}