質問

コマンドラインを使用して送信しているファイルを暗号化しますが、同じ方法を使用してそれらを解読する方法を見つけようとしています。コマンドを実行すると、パスフレーズのプロンプトが表示されますが、コマンドラインを使用してパスフレーズを通過する方法はわかりません。ファイルを暗号化する方法は次のとおりです。

var proc = new Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.WorkingDirectory = "C:\\";
proc.StartInfo.FileName = @"C:\Progra~1\GNU\GnuPG\gpg.exe";
proc.StartInfo.Arguments = @"-e -u ""user1@example.com"" -r ""user2@example.com"" ""C:\file.csc""";
proc.Start();
proc.WaitForExit();

**ここに私のソリューションに使用された便利なリンクがあります。http://social.msdn.microsoft.com/forums/en-us/csharpgeneral/thread/38c21304-fc7a-42cc-a5fb-dcb6da7f611/

役に立ちましたか?

解決

プロパティ Process.StandardInput 標準入力でパスフレーズを提供するために使用できるStreamWriterを提供する必要があります。

他のヒント

LinuxのGPGにはあります -Passphrase-Fd n, 、 どこ n intです。 n == 0の場合、パスフレーズは標準入力から読み取られます。

同じことがWindowsに当てはまるかどうかはわかりませんが、チェックアウトする価値があるかもしれません。

使用する --passphrase-fd 0 GPGにStdinからPassPhraseを取得し、パイプを使用して渡すには。

echo 123456| gpg --passphrase-fd 0 -e -u user1@example.com -r user2@example.com C:\file.csc

また

gpg --passphrase-fd 0 -e -u user1@example.com -r user2@example.com --passphrase-fd 2 file.csc < password.file

GPGがそれらをうまく処理しないため、Stdinの追加スペースを何らかの形で通過しないようにしてください。

.NETのStdinで何かをどのように渡すことができるかわからないので、そこでギャップを埋める必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top