using System; using System.IO;
using System.Security.Cryptography; 
using System.Text; 
class FileEncrypt 

public static Byte[] ConvertStringToByteArray(String s) 

return (new UnicodeEncoding()).GetBytes(s);
 } 
public static void Main() 

//创建文件流
 FileStream fs = new FileStrea("EncryptedFile.txt",FileMode.Create,FileAccess.Write); 
Console.WriteLine("输入一些要存储在加密文件中的文本::"); 
String strinput = Console.ReadLine(); Byte[] bytearrayinput=ConvertStringToByteArray(strinput);
 //具有随机密钥的 DES 实例 
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
 //从此实例创建 DES 加密器 
ICryptoTransform desencrypt = des.CreateEncryptor(); 
//创建使用 des 加密转换文件流的加密流 
CryptoStream cryptostream = new CryptoStream(fs,desencrypt,CryptoStreamMode.Write); 
//写出 DES 加密文件
 cryptostream.Write(bytearrayinput,0,bytearrayinput.Length); 
cryptostream.Close(); 
//创建文件流以读回加密文件 
FileStream fsread = new FileStream("EncryptedFile.txt",FileMode.Open,FileAccess.Read); 
//从此 des 实例创建 DES 解密器 
ICryptoTransform desdecrypt = des.CreateDecryptor(); 
//创建加密流集合以便对传入的字节进行读取并执行 des 解密转换 
CryptoStream cryptostreamDecr = new CryptoStream(fsread,desdecrypt,CryptoStreamMode.Read); 
//输出已解密文件的内容 
Console.WriteLine( (new StreamReader(cryptostreamDecr, new UnicodeEncoding())).ReadToEnd() ); 
Console.WriteLine ();
 Console.WriteLine ("按 Enter 键继续..."); 
Console.ReadLine(); } }

解决方案 »

  1.   

    现在有一种方法可以直接读DES加密的数据,不太牢靠,建议使用RSA
      

  2.   

    using System;
    using System.Threading;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    using System.Security.Cryptography;
    using System.IO;namespace UDPChat
    {
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class Class1
    {

    //private static string Key1="!i~6oxli@]t2K'y$";
    //private static string Iv1="~x7Oq{6+ql@#VI$";
    private static byte[] Iv=new byte[16];
    private static byte[] Key=new byte[16];
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {

    //
    // TODO: 在此处添加代码以启动应用程序
    //
    Stream stringkey=new FileStream("c:\\Networking\\Streams\\MyStreamKey1.txt",FileMode.Open,FileAccess.Read);
    BinaryReader brK=new BinaryReader(stringkey);
    int endOfFileK;
    int m=0;

    do
    {
    endOfFileK=brK.PeekChar();
    if(endOfFileK!=-1)
    {

    //keyOne[m]=Convert.ToByte(brK.ReadUInt16());
    Key[m]=brK.ReadByte();
    Console.WriteLine("Key[{0}]={1}",m,Key[m]);
    m++;
    //Console.WriteLine("m={0}",m);

    }
    }
    while(endOfFileK!=-1);
    Stream stringkey1=new FileStream("c:\\Networking\\Streams\\MyStreamIv1.txt",FileMode.Open,FileAccess.Read);
    BinaryReader brK1=new BinaryReader(stringkey1);
    int endOfFileK1;
    int m1=0;

    do
    {
    endOfFileK1=brK.PeekChar();
    if(endOfFileK1!=-1)
    {

    //keyOne[m]=Convert.ToByte(brK.ReadUInt16());
    Iv[m]=brK1.ReadByte();
    Console.WriteLine("Iv[{0}]={1}",m1,Iv[m1]);
    m1++;
    //Console.WriteLine("m={0}",m);

    }
    }
    while(endOfFileK1!=-1);
    encryptData();
    decryptData();
    } static void encryptData()
    {
    //Create cipher file stream
    FileStream fs=new FileStream("c:\\Networking\\Streams\\MyStreamCipher",FileMode.Create);
    //Create the instance of cipher
    RijndaelManaged RMCrypto=new RijndaelManaged();
    //cipher and output
    CryptoStream cs=new CryptoStream(fs,RMCrypto.CreateEncryptor(Key,Iv),CryptoStreamMode.Write);
    FileStream fsIn=new FileStream("c:\\Networking\\Streams\\诺丁山\\CD1.rmvb",FileMode.Open);
    int datal;
    while((datal=fsIn.ReadByte())!=-1)
    cs.WriteByte((byte)datal);
    //close 
    fsIn.Close();
    cs.Close();
    fs.Close();
    } static void decryptData()
    {
    FileStream fs=new FileStream("c:\\Networking\\Streams\\MyStreamCipher",FileMode.Open);
    RijndaelManaged RMCrypto=new RijndaelManaged();
    CryptoStream cs=new CryptoStream(fs,RMCrypto.CreateDecryptor(Key,Iv),CryptoStreamMode.Read);
    FileStream fsOut=new FileStream("c:\\Networking\\Streams\\MyStreamCipherPlain",FileMode.Create);
    int datal;
    while((datal=cs.ReadByte())!=-1)
    fsOut.WriteByte((byte)datal);
    fsOut.Close();
    cs.Close();
    fs.Close();
    }
    }
    }