如何使用GpgAPI为c#解密文件而不提示输入密码

本文关键字:提示 输入 密码 文件 解密 何使用 GpgAPI | 更新日期: 2023-09-27 17:59:01

我一直在尝试使用C#中的GpgAPI解密我的文件。它工作正常,但它一直提示我输入密码。下面的代码是我使用的,它来自作者的例子。

public bool DecryptReport(string dataFileLocation, string filename)
        {
            log.Info("Starting GPG decryption.");
            GpgInterface.ExePath = @"C:'Program Files (x86)'GNU'GnuPG'gpg2.exe";
            String encryptedFile = dataFileLocation + filename;
            filename = filename.ToString().Substring(0, filename.ToString().IndexOf(".gpg")).ToString();
            string file = dataFileLocation + filename;
            try
            {
                log.Info("Decrypting " + file);
                GpgDecrypt decrypt = new GpgDecrypt(encryptedFile, file);
                decrypt.AskPassphrase = GetPassword;
                {
                    log.Info("Password received.");
                    GpgInterfaceResult result = decrypt.Execute();
                    Callback(result);
                }
            }
            catch(Exception e)
            {
                log.Error("Caught an exception" + e.InnerException);
                return false;
            }
            return true;
        }
        public static string Callback(GpgInterfaceResult result)
        {
            if(result.Status == GpgInterfaceStatus.Success)
            {
                return "successfully decrypted.";
            }
            else
            {
                return "Error was found during decryption. Check the log.";
            }
        }
        public static SecureString GetPassword(AskPassphraseInfo arg)
        {
            return GpgInterface.GetSecureStringFromString(“password$");
        }

我在这个代码中做错了什么?为什么它不传递密码并继续解密,而不是提示输入密码?

如何使用GpgAPI为c#解密文件而不提示输入密码

gpg2不能正常工作。。。下载gpgclassic。参观https://www.gnupg.org/download/转到GnuPG binary->Windows->GnuPG classic的简单安装程序。

更改GpgInterface。ExePath=@"C:''Program Files(x86)''GNU''GnuPG''gpg2.exe""C:''Program Files(x86)''GNU''GnuPG''gpg.exe"