0

我累极了。我已经安装了 GnuPG 并导出了密钥,以及来自另一个 GnuPG 实例的两个公钥(我自己的和我的一个客户端)。我尝试在本地机器上配置“我的加密/解密”方法。

当我从一个小控制台应用程序运行加密方法时,它运行良好。当我在本地机器上从我的网络服务运行这个(相同的! - 使用相同的主体)方法时......我有一个 ExitCode = 2。

实际上很高兴收到错误消息,但对他们的身体不满意。

“gpg:没有默认密钥:密钥不可用 gpg:XXXXXXXXXXXXXXXX.xml:签名+加密失败:密钥不可用”

我应该怎么办?怎么了?

最好的问候,卡罗尔·布莱德克

4

2 回答 2

0
static bool EncryptPGP(string inFile, string outFile)
    {
        try
        {
            RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\GNU\GnuPG"); //LocalMachine
            if (key != null)
            {
                string path = key.GetValue("Install Directory").ToString();
                string pgpPath = string.Format("{0}\\gpg.exe", path);//@"C:\tools\GNU\GnuPG\gpg.exe";
                string password = "No no no no no";
                string keyName = "hihi";
                string args = string.Format(@"--batch --yes --passphrase {0} --recipient {1} --encrypt --output ""{2}"" --sign ""{3}""", password, keyName, outFile, inFile);
                Process proc = Process.Start(pgpPath, args);
                if (!proc.HasExited)
                {
                    proc.WaitForExit();
                }
                return proc.ExitCode == 0;
            }
        }
        catch (Exception exc)
        {
            Console.WriteLine(exc.Message);
        }
        return false;
    }
于 2010-04-20T14:40:13.560 回答
0

密钥环文件是按用户创建的。运行控制台应用程序时,它将在您的目录中查找 PGP 密钥环文件,而在 Web 服务中运行时,它将查找 Web 服务使用的用户身份的目录。

继续打开 cmd,切换到 GPG 安装目录并输入 gpg -h。在靠近顶部的某处,它会向您显示登录用户的密钥环文件所在的路径。

解决此问题的方法是将密钥环文件复制到它希望为 Web 服务用户找到它的位置。不确定 gpg 是否有任何命令行选项可以选择不同的密钥环文件位置。

于 2010-04-20T15:23:32.087 回答