从 C# 执行多个命令提示符命令
Execute multiple command prompt commands from c#
我正在尝试使用 C# 中的 OpenSSL 生成私钥。为了做到这一点,我尝试重定向进程标准输入,但我仍然遇到一些问题。
我提到我想对私钥使用 aes256 加密,为此,它需要一个密码,所以,我的问题是我不知道如何将该密码传输到进程,我的意思是我创建了过程中,我 运行 使用带有 aes256 加密的 OpenSSL 创建密钥的命令,而且我必须输入密码和确认密码。
这是我的代码:
Process cmd1 = new Process();
cmd1.StartInfo.FileName = "cmd.exe";
cmd1.StartInfo.RedirectStandardInput = true;
cmd1.StartInfo.RedirectStandardOutput = true;
cmd1.StartInfo.CreateNoWindow = true;
cmd1.StartInfo.UseShellExecute = false;
cmd1.StartInfo.WorkingDirectory = @"C:\usr\local\ssl\bin";
cmd1.Start();
cmd1.StandardInput.WriteLine("openssl genrsa -aes256 -out E:\testing_folder\urian_test7.com.key.pem 2048");
cmd1.StandardInput.Flush();
cmd1.StandardInput.WriteLine("123456");
cmd1.StandardInput.Flush();
cmd1.StandardInput.WriteLine("123456");
cmd1.StandardInput.Flush();
cmd1.StandardInput.Close();
Console.WriteLine("We're done! You got the key!");
cmd1.Close();
所以,我不知道如何发送私钥生成所需的密码...我的意思是,如果我 运行 在 cmd/openssl 中执行该命令(例如:openssl genrsa - aes256),它生成 RSA 私钥,然后它要求我输入密码和验证密码。那么,如果我想从 C# 中执行此操作,我该怎么做呢?因为我不知道如何传输该密码短语。这就是我的意思。
你可以试试:
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
using (StreamWriter sw = cmd.StandardInput)
{
if (sw.BaseStream.CanWrite)
{
sw.WriteLine("openssl genrsa -aes256 -out E:\testing_folder\test_file_com.key.pem 2048");
sw.WriteLine("123456");
sw.WriteLine("123456");
}
}
我正在尝试使用 C# 中的 OpenSSL 生成私钥。为了做到这一点,我尝试重定向进程标准输入,但我仍然遇到一些问题。 我提到我想对私钥使用 aes256 加密,为此,它需要一个密码,所以,我的问题是我不知道如何将该密码传输到进程,我的意思是我创建了过程中,我 运行 使用带有 aes256 加密的 OpenSSL 创建密钥的命令,而且我必须输入密码和确认密码。
这是我的代码:
Process cmd1 = new Process();
cmd1.StartInfo.FileName = "cmd.exe";
cmd1.StartInfo.RedirectStandardInput = true;
cmd1.StartInfo.RedirectStandardOutput = true;
cmd1.StartInfo.CreateNoWindow = true;
cmd1.StartInfo.UseShellExecute = false;
cmd1.StartInfo.WorkingDirectory = @"C:\usr\local\ssl\bin";
cmd1.Start();
cmd1.StandardInput.WriteLine("openssl genrsa -aes256 -out E:\testing_folder\urian_test7.com.key.pem 2048");
cmd1.StandardInput.Flush();
cmd1.StandardInput.WriteLine("123456");
cmd1.StandardInput.Flush();
cmd1.StandardInput.WriteLine("123456");
cmd1.StandardInput.Flush();
cmd1.StandardInput.Close();
Console.WriteLine("We're done! You got the key!");
cmd1.Close();
所以,我不知道如何发送私钥生成所需的密码...我的意思是,如果我 运行 在 cmd/openssl 中执行该命令(例如:openssl genrsa - aes256),它生成 RSA 私钥,然后它要求我输入密码和验证密码。那么,如果我想从 C# 中执行此操作,我该怎么做呢?因为我不知道如何传输该密码短语。这就是我的意思。
你可以试试:
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
using (StreamWriter sw = cmd.StandardInput)
{
if (sw.BaseStream.CanWrite)
{
sw.WriteLine("openssl genrsa -aes256 -out E:\testing_folder\test_file_com.key.pem 2048");
sw.WriteLine("123456");
sw.WriteLine("123456");
}
}