C#rijndael流作家问题

时间:2009-12-15 03:48:09

标签: c# rijndael

在代码中出现了一些错误,表示正在使用该文件。 我需要实现的是在文件中添加加密数据的第一部分,然后在同一文件中添加第二部分的加密数据。此文件需要稍后解密。我对这个领域很陌生。非常感谢。

    Class3 cs3;
    StreamWriter sWriter;

    private void Add_text_Part_One()
    {
        Rijndael RijndaelAlg = Rijndael.Create();
        // Create a string to encrypt.
        string sData = "Here is some data to encrypt.";
        string FileName = @"C:\CText.txt";

        cs3 = new Class3(sData, FileName, RijndaelAlg.Key, RijndaelAlg.IV);
        sWriter = new StreamWriter(cs3.getCS());
        sWriter.WriteLine(sData);
        sWriter.Close();
    }

    private void Add_text_Part_Two()
    {
        string sData = "Here is some more data to encrypt.";
        sWriter.WriteLine(sData);
        sWriter.Close();
    }
class Class3
{
    FileStream fStream;
    Rijndael RijndaelAlg;
    CryptoStream cStream;
    public Class3(String Data, String FileName, byte[] Key, byte[] IV)
    {
        fStream = File.Open(FileName, FileMode.Append);
        RijndaelAlg = Rijndael.Create();
        cStream = new CryptoStream(fStream, RijndaelAlg.CreateEncryptor(Key, IV), CryptoStreamMode.Write); 
    }
    public CryptoStream getCS()
    {
        return cStream;
    }

    public string getRes()
    {
        StreamReader sReader = new StreamReader(cStream);
        string val = null;
        val = sReader.ReadLine();
        return val;
    }     

1 个答案:

答案 0 :(得分:2)

在Class3的构造函数中

,调用File.Open()并将生成的FileStream分配给fstream。此fstream对象永远不会关闭,因此文件保持打开状态。您将不得不关闭fstream(优先实现IDisposable并在使用块中使用Class3)

编辑:对不起,我想我在这里失去了它。我不相信以上是正确的,但是,你关闭了StreamWriter,然后在第二部分再次尝试写入它,当它关闭时,可能想看看它。