-2

このコードをオンラインで見つけました。このプログラムで何が渡されるのか、この出力文字列と入力文字列は何ですか? 入力をファイル名として、出力をパスとして渡していますが、エラーが発生しています。

private void EncryptFile(string inputFile, string outputFile)
{
    try
    {
        string password = @"myKey123"; // Your Key Here
        UnicodeEncoding UE = new UnicodeEncoding();
        byte[] key = UE.GetBytes(password);

        string cryptFile = outputFile;
        FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create);

        RijndaelManaged RMCrypto = new RijndaelManaged();

        CryptoStream cs = new CryptoStream(fsCrypt,RMCrypto.CreateEncryptor(key, key),CryptoStreamMode.Write);

        FileStream fsIn = new FileStream(inputFile, FileMode.Open);

        int data;
        while ((data = fsIn.ReadByte()) != -1)
            cs.WriteByte((byte)data);

        fsIn.Close();
        cs.Close();
        fsCrypt.Close();
    }
    catch
    {
        MessageBox.Show("Encryption failed!", "Error");
    }
}
4

1 に答える 1

2

outputFileパラメータはパスではなく、書き込み先の完全修飾ファイル名です。このコードを呼び出す方法の例は次のとおりです。

EncryptFile(@"c:\temp\unencryptedfile.txt", @"c:\temp\encryptedfile.txt");

catchそれを除いて、コードを次のように置き換えます。

catch(Exception ex) {
  MessageBox.Show(ex.Message); // will show the top exception
  if (ex.InnerException != null) {
    MessageBox.Show(ex.InnerException.Message); // will show additional details if present
  }
}

補足:ご存知のように、あなたが持っているコードはメモリリークを起こします。using句を調べて、どのクラスを使用しているかを調べたいと思うかもしれませんIDisposable

于 2012-10-11T17:41:54.093 に答える