我正在使用命令行加密我正在发送的文件,但我正在尝试找出如何使用相同的方法来解密它们。如果我运行该命令,它会提示输入密码短语,但我看不到使用命令行传递密码短语的方法。下面是我加密文件的方式:
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-dcb6da7f6411/
发布于 2010-11-01 22:52:26
属性Process.StandardInput应该为您提供一个StreamWriter,您可以使用它在标准输入上提供密码短语。
发布于 2010-11-01 22:55:51
Linux上的GPG有--passphrase-fd,其中N是int。如果N == 0,则从标准输入读取密码。
不确定是否同样适用于Windows,但可能值得一试。
发布于 2010-11-01 22:57:41
使用--passphrase-fd 0让GPG从标准输入中获取密码短语,然后使用管道将其传递进来。
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请确保您不会在stdin上传递任何额外的空格,因为GPG无法很好地处理这些空格。
我不确定如何在.NET上传递一些关于标准输入的东西,所以你必须填补这个空白。
https://stackoverflow.com/questions/4069919
复制相似问题