这个是整理的书里的例子,很简单实用,利用这几种类可以很轻松的实现加密解密
static void Main(string[] args)
{
Console.WriteLine("select service provider for CryptoStream");
Console.WriteLine("1=DESCryptoServiceProvider");
Console.WriteLine("2=RC2CryptoServiceProvider");
Console.WriteLine("3=RijindaelManaged");
Console.WriteLine("4=TripleDESCryptoServiceProvider");
Console.WriteLine("5=SymmetricAlgorithm");
SymmetricAlgorithm des = null;
switch (Console .ReadLine ())
{
case "1":
des = new DESCryptoServiceProvider();
break;
case "2":
des = new RC2CryptoServiceProvider();
break;
case "3":
des = new RijndaelManaged();
break;
case "4":
des = new TripleDESCryptoServiceProvider();
break;
case "5":
des = SymmetricAlgorithm.Create();
break;
default :
Console.WriteLine("Wrong selection");
return;
}
//加密
FileStream fs = new FileStream("D:\\加密.txt", FileMode.Create, FileAccess.Write);
ICryptoTransform desencrypt = des.CreateEncryptor();
CryptoStream cryptostream = new CryptoStream(fs, desencrypt, CryptoStreamMode.Write);//CryptoStream 加密流
string str = "secret message";
byte[] data = Encoding.Unicode.GetBytes(str);
Console.WriteLine("Original Message:{0}",str );
cryptostream.Write(data, 0, data.Length);
cryptostream.Close();
fs.Close();
//读取文件
fs = new FileStream("D:\\加密.txt", FileMode.Open, FileAccess.Read);
byte[] data1 = new byte[fs.Length];
fs.Read(data1, 0, data1.Length);
Console.WriteLine("Encrypted Message:" + Encoding.Unicode.GetString(data1));
fs.Position = 0;
//解密
desencrypt = des.CreateDecryptor();//创建解密对象
cryptostream = new CryptoStream(fs, desencrypt, CryptoStreamMode.Read);
byte[] data2 = new byte[fs.Length];
cryptostream.Read(data2, 0, data2 .Length );
Console.WriteLine("Descryped Message:" + Encoding.Unicode.GetString(data2));
cryptostream.Close();
fs.Close();
Console.ReadLine();
}
}