0

私は以下のコードを持っています:

private void encryptFileButton_Click(object sender, EventArgs e)
        {
            try
            {
                bool asciiArmor = false;
                bool withIntegrityCheck = false;
                pgp.EncryptFile(@attachmentTextBox.Text,
                         @"C:\TCkeyPublic.txt",
                         @"C:\OUTPUT.pgp",
                         asciiArmor,
                         withIntegrityCheck);
                MessageBox.Show("File Encrypted Successfully!");
            }
            catch
            {
                MessageBox.Show("File Encryption Fail!");
            }            
        }

@"C:\TCkeyPublic.txt"のようなものに変えたいnew FileInfo(openFileDialog1.FileName)。そのため、ユーザーは、ファイル名またはファイル パスが異なる場合に常にコードを変更する必要はありません。

しかし、それをしようとすると、コードの下にこの赤いジザグ線があり、マウスを上に置くと、System.IO.FileInfo を System.IO.Stream に変換できないと表示されます。

                        try
                        {
                            bool asciiArmor = false;
                            bool withIntegrityCheck = false;
                            pgp.EncryptFile(@attachmentTextBox.Text,
                                     new FileInfo(openFileDialog1.FileName),
                                     @"C:\OUTPUT.pgp",
                                     asciiArmor,
                                     withIntegrityCheck);
                            MessageBox.Show("File Encrypted Successfully!");
                        }
                        catch
                        {
                            MessageBox.Show("File Encryption Fail!");
                        } 

私はdidisoft pgp(BouncyCastle.CryptoExt.dllおよびDidiSoft.Pgp.dll)を使用して、PGP公開鍵を使用してファイルを暗号化するためにPGPを使用するプロジェクトを構築し、パスフレーズと秘密鍵を使用してそれを復号化しています。

親切にアドバイス!!!ありがとう!

4

2 に答える 2

0

次のようなことを試すことができます:

using System.IO;
...
using (var inputStream = new FileStream(openFileDialog1.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var outputStream = new FileStream(@"C:\OUTPUT.pgp", FileMode.OpenOrCreate))
{
   pgp.EncryptFile(@attachmentTextBox.Text, inputStream, outputStream, ..
}

あなたのdidisoftを持っていないので、これを自分で確認することはできません..

于 2013-10-30T09:20:30.393 に答える
0

ファイルのロックは、DidiSoft API の EncryptFile メソッドも同じファイルからストリームを取得しようとするために発生します。おそらく、次のスニペットの例は、あなたが意図していることです:

bool asciiArmor = false;
bool withIntegrityCheck = false;
if (openFileDialog1.ShowDialog() == DialogResult.OK) 
{
  pgp.EncryptFile(@attachmentTextBox.Text,
                  openFileDialog1.FileName,
                  @"C:\OUTPUT.pgp",
                  asciiArmor,
                  withIntegrityCheck);
}

ストリームを操作したい場合は、 http: //www.didisoft.com/net-openpgp/examples/encrypt-file/#EncryptStream に示されているように、EncryptStream メソッドを確認できます。

ところで、support@didisoft.com まで直接お問い合わせください。

于 2013-11-16T20:14:05.893 に答える