如何在不提示输入密码的情况下使用 GpgAPI for c# 解密文件
How to decrypt file using GpgAPI for c# without prompting for the password
我一直在尝试使用 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$");
}
我在这段代码中做错了什么?为什么它不传递密码并继续解密而不是提示输入密码?
gpg2 无法正常工作...下载 gpg classic。
访问 https://www.gnupg.org/download/ 转到 GnuPG 二进制 -> Windows -> GnuPG 经典的简单安装程序。
将GpgInterface.ExePath = @"C:\Program Files (x86)\GNU\GnuPG\gpg2.exe";改为"C:\Program Files (x86)\GNU\GnuPG\gpg.exe";
我一直在尝试使用 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$");
}
我在这段代码中做错了什么?为什么它不传递密码并继续解密而不是提示输入密码?
gpg2 无法正常工作...下载 gpg classic。 访问 https://www.gnupg.org/download/ 转到 GnuPG 二进制 -> Windows -> GnuPG 经典的简单安装程序。
将GpgInterface.ExePath = @"C:\Program Files (x86)\GNU\GnuPG\gpg2.exe";改为"C:\Program Files (x86)\GNU\GnuPG\gpg.exe";