1

公開鍵を使用してテキストを暗号化し、秘密鍵とパスフレーズを使用して復号化するコードを作成しようとしています。

私はプログラミングの学生ではないので、プログラミング言語はあまり得意ではありません。しかし、私のミニ プロジェクトでは、暗号化に関するプログラムを作成する必要があります。

以下のコードでは、C ドライブのテキスト ファイルを使用して、公開鍵を使用してエンコードします。しかし、手動で指示するのではなく、openfiledialog を使用してファイルを選択したい (あまり実用的ではない)

誰かがコードの編集を手伝ってくれたら本当に感謝しています。PS私は自分のコードにopenfiledialogを適用する方法を本当に知りません。YouTube や Google からの情報を使用すると、エラーが発生し続けます。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using DidiSoft.Pgp;

namespace TEST2
{
    public partial class Form1 : Form
    {
        PGPLib pgp = new PGPLib();
        public Form1()
        {
            InitializeComponent();
        }

        private void encryptButton_Click(object sender, EventArgs e)
        {
            string testingstring = pgp.EncryptString(testTextBox.Text, new FileInfo(@"c:\TCkeyPublic.txt"));
            encryptedtextTextBox.Text = testingstring;
        }

        private void decryptButton_Click(object sender, EventArgs e)
        {
            try
            {
                String plainString = pgp.DecryptString(encryptedtextTextBox.Text,
                new FileInfo(@"c:\TCkeyPrivate.txt"), passphraseTextBox.Text);
                decryptedtextTextBox.Text = plainString;
                encryptedtextTextBox.Text = "";
                passphraseTextBox.Text = "";
            }
            catch
            {
                MessageBox.Show("ERROR! Please check passphrase and do not attempt to edit cipher text");
            }
        }

        private void passphraseTextBox_TextChanged(object sender, EventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}
4

2 に答える 2

9

WinFormsを使用していると仮定します。

のインスタンスを作成してOpenFileDialog呼び出しShowDialog、ユーザーが操作をキャンセルしなかった場合は、FileNameプロパティを読み取ります。選択したファイルのフル パスが含まれます。コード内:

var dlg = new OpenFileDialog();
if (dlg.ShowDialog() != DialogResult.OK)
    return;

new FileInfo(dlg.FileName, passphraseTextBox.Text);

もちろん、ユーザーが表示するファイルをすばやくフィルタリングできるようにする必要がある場合がありますFilter。そのためにプロパティを使用できます。

var dlg = new OpenFileDialog();
dlg.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*";

複数の選択を許可することもできます。これを設定Multiselectするtrueと、選択したすべてのファイルがFileNamesプロパティで取得されます。

var dlg = new OpenFileDialog();
dlg.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*";
dlg.Multiselect = true;

if (dlg.ShowDialog() != DialogResult.OK)
    return;

foreach (var path in dlg.FileNames)
{
    new FileInfo(path, passphraseTextBox.Text);
    // ...
}
于 2013-10-29T14:20:14.717 に答える
2
private void decryptButton_Click(object sender, EventArgs e)
{
    OpenFileDialog openFileDialog1 = new OpenFileDialog();

    openFileDialog1.InitialDirectory = "c:\\" ;
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
    openFileDialog1.FilterIndex = 2 ;
    openFileDialog1.RestoreDirectory = true ;

    if(openFileDialog1.ShowDialog() == DialogResult.OK)
    {
    try
            {
                String plainString = pgp.DecryptString(encryptedtextTextBox.Text,new FileInfo(openFileDialog1.FileName), passphraseTextBox.Text);
                decryptedtextTextBox.Text = plainString;
                encryptedtextTextBox.Text = "";
                passphraseTextBox.Text = "";
            }
            catch
            {
                MessageBox.Show("ERROR! Please check passphrase and do not attempt to edit cipher text");
            }
     }
}
于 2013-10-29T14:23:00.373 に答える