WinSCP .net 库 - Protocol.Ftp - System.FormatException Base-64 字符数组或字符串的长度无效
WinSCP .net library - Protocol.Ftp - System.FormatException Invalid length for a Base-64 char array or string
我正在使用 SFTP,只是想将 Ftp 添加到我们现有的程序中。 Ftp 协议推荐的 SshHostKeyFingerprint 是否与 SFtp 相同?
如果需要,我将如何格式化此密钥?它需要像“sha-256-”这样的前缀吗?
b5:d2:ab:1a:07:9c:88:b7:0a:fc:6e:1a:f1:c0:aa:c5:c4:93:c3:32:ce:bc:a1:e3:f1:4a:2c:02:f8:32:35:c9
当 运行 此 C# 代码时出现错误:
sessionOptions = new SessionOptions
{
Protocol = Protocol.Ftp,
HostName = HostName,
PortNumber = HostPort,
UserName = UserName,
Password = Password
};
运行 的结果错误是:
Exception thrown: 'System.FormatException' in mscorlib.dll Invalid
length for a Base-64 char array or string.
程序在错误中没有完整的堆栈跟踪。
当我添加它时,我看到包含错误的模块:“WinSCPWrapperGet.Program.get_Password()”
(其中“WinSCPWrapperGet”是我正在修改的程序)。
我做了一个错误的假设,因为我有前后日志语句,所以错误出在 WinScp 库中。
WriteLogConsole("Using Protocol.Ftp");
sessionOptions = new SessionOptions
{
Protocol = Protocol.Ftp,
HostName = HostName,
PortNumber = HostPort,
UserName = UserName,
Password = Password
};
WriteLogConsole("Used Protocol.Ftp");
原来“密码”是一个属性,有一些“getter逻辑”...
static string Password { get { return Encoding.ASCII.GetString(Convert.FromBase64String(GetStringValueFromConfigKey("Password", ""))); } }
我们在配置文件中对密码进行了 base64 编码,但我没有这样做。所以我可能会更改该代码以提供更友好的错误。
我正在使用 SFTP,只是想将 Ftp 添加到我们现有的程序中。 Ftp 协议推荐的 SshHostKeyFingerprint 是否与 SFtp 相同?
如果需要,我将如何格式化此密钥?它需要像“sha-256-”这样的前缀吗?
b5:d2:ab:1a:07:9c:88:b7:0a:fc:6e:1a:f1:c0:aa:c5:c4:93:c3:32:ce:bc:a1:e3:f1:4a:2c:02:f8:32:35:c9
当 运行 此 C# 代码时出现错误:
sessionOptions = new SessionOptions
{
Protocol = Protocol.Ftp,
HostName = HostName,
PortNumber = HostPort,
UserName = UserName,
Password = Password
};
运行 的结果错误是:
Exception thrown: 'System.FormatException' in mscorlib.dll Invalid length for a Base-64 char array or string.
程序在错误中没有完整的堆栈跟踪。 当我添加它时,我看到包含错误的模块:“WinSCPWrapperGet.Program.get_Password()” (其中“WinSCPWrapperGet”是我正在修改的程序)。
我做了一个错误的假设,因为我有前后日志语句,所以错误出在 WinScp 库中。
WriteLogConsole("Using Protocol.Ftp");
sessionOptions = new SessionOptions
{
Protocol = Protocol.Ftp,
HostName = HostName,
PortNumber = HostPort,
UserName = UserName,
Password = Password
};
WriteLogConsole("Used Protocol.Ftp");
原来“密码”是一个属性,有一些“getter逻辑”...
static string Password { get { return Encoding.ASCII.GetString(Convert.FromBase64String(GetStringValueFromConfigKey("Password", ""))); } }
我们在配置文件中对密码进行了 base64 编码,但我没有这样做。所以我可能会更改该代码以提供更友好的错误。