C#加密实现

来源:互联网 发布:小米max usb网络共享 编辑:程序博客网 时间:2024/05/22 22:15

大一刚学完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 0
原创粉丝点击