利用StreamWrite流和StreamRead流通过RijndaelManaged对称加密算法外加CryptoStream流来实现把文本读入的流转换为加密流以便传输或保存。
源代码如下:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Security.Cryptography;
namespace CryptoGraphyConsole
{
class Program
{
static void Main(string[] args)
{
RijndaelManaged rm=new RijndaelManaged();
rm.GenerateKey();
rm.GenerateIV();
CreateFile();
Encode(rm);
Decode(rm);
ReadFormEncodeFile();
Console.ReadLine();
}
private static void ReadFormEncodeFile()
{
FileStream fs = new FileStream("encoded.txt", FileMode.Open);
BufferedStream bs = new BufferedStream(fs);
StreamReader sr = new StreamReader(bs);
string outStr = "";
while ((outStr = sr.ReadLine()) != null)
{
Console.WriteLine(outStr);
}
}
private static void Decode(RijndaelManaged rm)
{
FileStream fs = new FileStream("encoded.txt", FileMode.Open);
ICryptoTransform decoder = rm.CreateDecryptor();
CryptoStream cs = new CryptoStream(fs, decoder, CryptoStreamMode.Read);
int i = 0;
while ((i = cs.ReadByte()) != -1)
{
Console.Write((char)i);
}
cs.Close();
}
private static void Encode(RijndaelManaged rm)
{
FileStream fs = new FileStream("test.txt", FileMode.Open);
ICryptoTransform encoder = rm.CreateEncryptor();
CryptoStream cs = new CryptoStream(fs, encoder, CryptoStreamMode.Read);
FileStream outfile = new FileStream("encoded.txt", FileMode.Create);
int i = 0;
while ((i = cs.ReadByte()) != -1)
{
outfile.WriteByte((byte)i);
}
cs.Close();
outfile.Close();
}
private static void CreateFile()
{
FileStream fs = new FileStream("test.txt", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("1232456786");
sw.WriteLine("dsfaghjytukilo");
sw.Close();
}
}
}